rust - Rust 特征有运行时开销吗?
问题描述
如果我在下面的代码中创建c1
类型,是否有任何运行时开销?Concrete1
pub trait ExampleTrait {
fn foo(&self);
}
pub struct Concrete1 {}
impl ExampleTrait for Concrete1 {
fn foo(&self) {}
}
pub struct Concrete2 {}
impl ExampleTrait for Concrete2 {
fn foo(&self) {}
}
fn main() {
let c1 = Concrete1 {};
c1.foo();
}
这是否需要任何类型的 v-table 查找或任何其他类型的开销?我想要一个特征,以便我可以在编译时强制执行Concrete1
并Concrete2
实现相同的方法集。
我将静态选择在主程序中使用哪种具体类型;这两个实现的存在只是为了在需要时我可以使用该特征的替代实现。
解决方案
推荐阅读
- python - 非递归脚本的递归问题 - 并行处理
- python - WebDriverException:消息:服务 chromedriver 意外退出。状态码是:127 with ChromeDriver and Selenium in Ubuntu
- c# - C# webAPI 限制路由
- php - 从网站上的 MYSQL 表中检查促销代码
- javascript - 从当前页面的响应中重新加载完整的 html 代码
- firebase - 如何检索 Firebase 实时数据库中所有子项的列表?
- c# - 从 C# 中的线程启动的线程不会引发未处理的期望参数
- python - Python plot 仅使用 x 的每个第 n 个元素来标记 x 轴
- javascript - 如果选中另一个具有相同 ID 的复选框,如何禁用复选框
- windows - 如果服务未运行,批处理文件以启动多服务