Crates.io | as_any_min |
lib.rs | as_any_min |
version | 1.0.2 |
source | src |
created_at | 2020-10-25 00:47:20.180411 |
updated_at | 2020-10-25 01:28:54.262586 |
description | A minuscule rust library that allows trait objects to be easily upcast to Any |
homepage | |
repository | https://github.com/liambloom/as_any_min |
max_upload_size | |
id | 305191 |
size | 6,034 |
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.
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();
}
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;
}
License: MIT