box_any 0.1.0

A wrap Box without generic type that allows dynamic dispatch / downcast.
Documentation

box_any

A wrap Box without generic type that allows dynamic dispatch / downcast.

Allows dynamic dispatch like Box but without using fat pointer. Provides a dynamic box type BoxAny, which contains a Box value. BoxAny' is similar to Box<dyn Any> from std::any::Any` but it doesn't use fat pointer to dynamic dispatch.

Example

use std::any:: TypeId;
use box_any::BoxAny;

let box_u32 = Box::new(032);
let box_string = Box::new(String::from("Hello World"));
let box_any_u32: BoxAny = box_u32.clone().into();
let box_any_string: BoxAny = box_string.clone().into();
let box_any_vec: Vec<BoxAny> = vec![box_any_u32, box_any_string];
assert!(box_any_vec[1].is::<String>());
let string_2: &String = box_any_vec[1].downcast_ref::<String>().unwrap();
assert_eq!(string_2, box_string.as_ref());