Trait icu_provider::erased::ErasedDataStruct[][src]

pub trait ErasedDataStruct: 'static + Debug {
    fn clone_into_box(&self) -> Box<dyn ErasedDataStruct>;
fn into_any(self: Box<Self>) -> Box<dyn Any>;
fn as_any(&self) -> &dyn Any; }

Auto-implemented trait allowing for type erasure of data provider structs.

Requires the static lifetime in order to be convertible to Any.

Required methods

fn clone_into_box(&self) -> Box<dyn ErasedDataStruct>[src]

Clone this trait object reference, returning a boxed trait object.

fn into_any(self: Box<Self>) -> Box<dyn Any>[src]

Return this boxed trait object as Box<dyn Any>.

Examples

use icu_provider::erased::ErasedDataStruct;
use icu_provider::hello_world::HelloWorldV1;

// Create type-erased box
let erased: Box<dyn ErasedDataStruct> = Box::new(HelloWorldV1::default());

// Convert to typed box
let boxed: Box<HelloWorldV1> = erased.into_any().downcast().expect("Types should match");

fn as_any(&self) -> &dyn Any[src]

Return this trait object reference as &dyn Any.

Also see associated method downcast_ref().

Examples

use icu_provider::erased::ErasedDataStruct;
use icu_provider::hello_world::HelloWorldV1;

// Create type-erased reference
let data = HelloWorldV1::default();
let erased: &dyn ErasedDataStruct = &data;

// Borrow as typed reference
let borrowed: &HelloWorldV1 = erased.as_any().downcast_ref().expect("Types should match");
Loading content...

Implementations

impl dyn ErasedDataStruct[src]

pub fn downcast_ref<T: Any>(&self) -> Result<&T, Error>[src]

Convenience function: Return a downcast reference, or an error if mismatched types.

Examples

use icu_provider::erased::ErasedDataStruct;
use icu_provider::hello_world::HelloWorldV1;

// Create type-erased reference
let data = HelloWorldV1::default();
let erased: &dyn ErasedDataStruct = &data;

// Borrow as typed reference
let borrowed: &HelloWorldV1 = erased.downcast_ref().expect("Types should match");

Trait Implementations

impl DataExporter<'_, dyn ErasedDataStruct + 'static> for HelloWorldProvider<'static>[src]

Adds entries to a HelloWorldProvider from ErasedDataStruct

impl<'d, 's> DataProvider<'d, dyn ErasedDataStruct + 's> for HelloWorldProvider<'static> where
    's: 'd, 
[src]

impl<'s> ToOwned for dyn ErasedDataStruct + 's[src]

type Owned = Box<dyn ErasedDataStruct + 's>

The resulting type after obtaining ownership.

Implementors

impl<T> ErasedDataStruct for T where
    T: Clone + Debug + Any
[src]

Loading content...