26、Rust编程:静态与动态分发及标准库集合详解

Rust静态与动态分发及集合详解

Rust编程:静态与动态分发及标准库集合详解

1. 静态与动态分发

在编程中,我们会遇到静态分发和动态分发两种方式。静态分发意味着在编译时就确定具体调用的函数,而动态分发则是在运行时决定。

静态分发通常需要更长的编译时间,但生成的代码运行速度较快。不过,如果编译器在编译时没有足够的信息,那么动态分发就是唯一的选择。

下面通过一个示例来说明两者的区别。假设我们有一个需求:用户输入一个字符串,如果输入是 “b”,则打印带框的文本;否则,打印普通文本。

静态分发实现
// SOLUTION 1/ter //
fn draw_text<T>(txt: T) where T: Draw {
    txt.draw();
}

let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
let to_box = input.trim() == "b";
if to_box {
    draw_text(boxed_greeting);
} else {
    draw_text(greeting);
}

在静态分发中,我们需要为不同的类型分别编写函数调用。当运行程序时,如果输入 “b” 并回车,会打印 [Hi];如果输入其他内容或直接回车,则会打印 Hello。

动态分发实现
// SOLUTION 2/bis //
fn dra
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值