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
Rust静态与动态分发及集合详解
超级会员免费看
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



