2个版本
0.1.1 | 2023年8月30日 |
---|---|
0.1.0 | 2023年8月29日 |
#48 在 #dispatch
在 as_base 中使用
5KB
80 行
as_base
该软件包允许直接访问类似于C++公共基类的特质对象的字段。不涉及虚函数调度,基对象总是从与封装对象相同的地址开始。
use as_base::*;
struct BaseType {
x: u64,
}
trait MyTrait: AsBase<BaseType> {}
#[derive(AsBase)]
#[repr(C)]
struct Implementor {
pub base: BaseType,
}
impl MyTrait for Implementor {}
fn main() {
let x = Implementor {
base: BaseType { x: 42 },
};
let dyn_reference = &x as &dyn MyTrait;
assert_eq!(dyn_reference.as_base().x, 42)
}
依赖项
~3MB
~57K SLoC