2 个版本
0.0.1 | 2023 年 11 月 29 日 |
---|---|
0.0.0 | 2023 年 11 月 29 日 |
33 在 #usize
4KB
检查一个类型是否实现了特例
use instance::{define_interface, Interface};
define_interface!(TypeSize);
trait TypeSize {
fn type_size(&self) -> usize;
}
struct WasmI32(i32);
struct WasmI64(i64);
impl TypeSize for WasmI32 {
fn type_size(&self) -> usize {
4
}
}
fn main() {
let v1 = WasmI32(0);
let object = v1.cast();
println!("{:?}", object.map(|v| v.meta_data())); // 4
let v2 = WasmI64(0);
let object = Interface::<dyn TypeSize>::recast(&v2);
println!("{:?}", object.map(|v| v.meta_data())); // None
}