## dyncast [github](https://github.com/cynecx/dyncast) [crates.io](https://crates.io/crates/dyncast) [docs.rs](https://docs.rs/dyncast) Proof of concept. This library provides opt-in type downcasting to `dyn Trait`s. **Fair warning**: The soundness of this approach has not been validated. ```rust 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::().is_some()); assert!(b.dyncast_to::().is_some()); assert!(a.dyncast_to::().is_none()); assert!(b.dyncast_to::().is_none()); } ``` ### Platform support This crate has been tested and validated on the following platforms: - macOS `x86_64`, `aarch64` - Linux `x86_64`, `aarch64` - Windows 1X `x86_64`