2 个不稳定版本
0.1.0 | 2024年4月13日 |
---|---|
0.0.1 | 2023年4月22日 |
#806 in Rust 模式
71 每月下载量
26KB
613 行
dyncast
概念证明。
此库提供对 dyn Trait
的可选类型下载数。
警告:此方法的安全性尚未得到验证。
use std::any::Any;
use dyncast::{dyncast, DyncastExt};
#[dyncast]
trait Boba {
fn supper(&self);
}
struct A;
#[dyncast]
impl Boba for A {
fn supper(&self) {
println!("a")
}
}
struct B;
#[dyncast]
impl Boba for B {
fn supper(&self) {
println!("b")
}
}
#[dyncast]
trait Soba {}
#[test]
fn boba() {
let a = A;
let b = B;
let a = &a as &dyn Any;
let b = &b as &dyn Any;
assert!(a.dyncast_to::<dyn Boba>().is_some());
assert!(b.dyncast_to::<dyn Boba>().is_some());
assert!(a.dyncast_to::<dyn Soba>().is_none());
assert!(b.dyncast_to::<dyn Soba>().is_none());
}
平台支持
该软件包已在以下平台上进行测试和验证
- macOS
x86_64
,aarch64
- Linux
x86_64
,aarch64
- Windows 1X
x86_64
依赖项
~295–730KB
~17K SLoC