pub trait Wrapper {
    type Inner: Clone;

    fn from_inner(inner: Self::Inner) -> Self;
    fn as_inner(&self) -> &Self::Inner;
    fn as_inner_mut(&mut self) -> &mut Self::Inner;
    fn into_inner(self) -> Self::Inner;

    fn to_inner(&self) -> Self::Inner { ... }
    fn copy(&self) -> Self
    where
        Self: Sized,
        Self::Inner: Copy
, { ... } }
Expand description

Trait defining wrapped types (“newtypes” in rust terminology). Wrapped types are used for allowing implemeting foreign traits to foreign types: https://doc.rust-lang.org/stable/rust-by-example/generics/new_types.html

Trait defines convenient methods for accessing inner data, construct and deconstruct newtype. It also serves as a marker trait for newtypes.

The trait works well with #[derive(Wrapper)] from amplify_derive crate

Required Associated Types

Inner type wrapped by the current newtype

Required Methods

Instantiates wrapper type with the inner data

Returns reference to the inner representation for the wrapper type

Returns a mutable reference to the inner representation for the wrapper type

Unwraps the wrapper returning the inner type

Provided Methods

Clones inner data of the wrapped type and return them

Copies the wrapped type

Implementors