Expand description
A type-erased slice.
Semantically &[dyn Any]
.
Examples
use list_any::SliceAny;
let data: &[u8] = b"hello";
let slice_any: SliceAny = SliceAny::from(data);
assert_eq!(slice_any.downcast::<u8>(), Some(data));
Implementations
sourceimpl<'a> SliceAny<'a>
impl<'a> SliceAny<'a>
sourcepub fn opaque() -> Self
pub fn opaque() -> Self
Create a SliceAny
with a length of 0, for which downcasting will
always return None
.
use list_any::SliceAny;
let slice = SliceAny::opaque();
assert_eq!(slice.downcast::<f64>(), None);
assert_eq!(slice.downcast::<u32>(), None);
assert_eq!(slice.downcast::<()>(), None);
sourcepub fn deferred() -> Self
pub fn deferred() -> Self
Create a SliceAny
with a length of 0, for which downcasting will
always return Some
.
use list_any::SliceAny;
let slice = SliceAny::deferred();
assert_eq!(slice.downcast::<f64>(), Some(&[][..]));
assert_eq!(slice.downcast::<u32>(), Some(&[][..]));
assert_eq!(slice.downcast::<()>(), Some(&[][..]));
sourceimpl<'a, B: ?Sized> SliceAny<'a, B>
impl<'a, B: ?Sized> SliceAny<'a, B>
sourcepub fn type_id_of_element(&self) -> TypeId
pub fn type_id_of_element(&self) -> TypeId
Returns the TypeId
of the elements contained in this slice.
Examples
use core::any::TypeId;
use list_any::SliceAny;
let data: &[u8] = b"hello";
let slice_any: SliceAny = SliceAny::from(data);
assert_eq!(slice_any.type_id_of_element(), TypeId::of::<u8>());
Trait Implementations
impl<'a, B: ?Sized + Send + Sync> Send for SliceAny<'a, B>
impl<'a, B: ?Sized + Sync> Sync for SliceAny<'a, B>
Auto Trait Implementations
impl<'a, B: ?Sized> RefUnwindSafe for SliceAny<'a, B> where
B: RefUnwindSafe,
impl<'a, B: ?Sized> Unpin for SliceAny<'a, B>
impl<'a, B: ?Sized> UnwindSafe for SliceAny<'a, B> where
B: RefUnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more