Rust特性有运行时开销吗



如果在下面的代码中创建类型为Concrete1c1,是否会有运行时开销?

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表查找或任何其他类型的开销?我想要一个特性,以便在编译时强制执行Concrete1Concrete2实现相同的方法集。

我将静态地选择在主程序中使用哪种具体类型;这两个实现的存在只是为了在需要时可以使用特性的替代实现。

如果具体类型是静态已知的,则使用静态调度。

如果具体类型未知(即特征对象:&dyn ExampleTrait(,则使用动态调度。

另请参阅:

  • 动态调度的实际运行时性能成本是多少

相关内容

  • 没有找到相关文章

最新更新