generics - 特征默认函数实现是否会像泛型一样导致代码膨胀?
问题描述
我偶然发现了这个有趣的代码示例:
trait Bar {
fn foo(&mut self);
fn call_foo_twice(&mut self) {
self.foo(); // <-- this is statically dispatched
self.foo();
}
}
在 C++ 中,如果这是一个基类而不是 trait,call_foo_twice
则只会编译一次,但它会动态调度对 的调用foo
,它本身将被声明为虚拟的。
如果这些foo
调用是在 Rust 中静态分派的,这表明call_foo_twice
将为实现的每个类型重新编译,Bar
因为每个类型都有自己唯一的foo
. 这个对吗?对于我更喜欢减少编译时间而不是提高性能的情况,是否应该使用一个成语?
解决方案
推荐阅读
- javascript - 当用户重定向到页面时隐藏 url 中的查询字符串
- azure-sql-database - 部署 ADF 管道的最佳实践
- c# - 使用正则表达式(.net 和 C#)识别行尾
- c# - Docusign 在模板中设置现有的预填充工具文本
- flutter - Flutter中如何判断一个Widget是有状态的还是无状态的?
- flutter - [Flutter][AnimatedList] 在“insertItem”之后添加到列表中的新元素不调用“initState”而只调用“build”
- django - 为什么非托管模型不计算 Django 中的 id?
- r - 如何添加美元符号以悬停?
- ssh - 限制对服务器的 ssh 访问
- python - 从具有相同类名的网页获取信息(Python Selenium)