Expand description
This is a very minimal crate that makes it easier to work
with traits that implement Any by allowing you to easily
upcast to it.
§Example
use core::any::Any;
use as_any_min::AsAny;
struct MyStruct;
trait MyTrait {}
impl MyTrait for MyStruct {}
/* Note that AsAny is automatically implemented for all
structs that implement Any, so there is no need to
implement it manually (in fact it won't compile if
you try to) */
fn main() {
// my_variable is now a trait object, which is the
// main use case for the AsAny trait.
let my_variable: &dyn MyTrait = &MyStruct;
let my_any_variable: &dyn Any = my_variable.as_any();
}§Without Using AsAny
Since rust doesn’t (currently) have any built in way to
upcast from a trait object to another trait (such as Any),
this won’t compile.
ⓘ
use core::any::Any;
struct MyStruct;
trait MyTrait {}
impl MyTrait for MyStruct {}
fn main() {
let my_variable: &dyn MyTrait = &MyStruct;
let my_any_variable: &dyn Any = my_variable;
}Traits§
- AsAny
- This trait allows anything that implements
Anyto be easily upcast toAny.