Workflow Status

asanymin

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

```rust use core::any::Any; use as_any::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() { // myvariable is now a trait object, which is the // main use case for the AsAny trait. let myvariable: &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.

```rust 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;

} ```

License: MIT