Struct ink_metadata::TypeSpec

source ·
pub struct TypeSpec<F: Form = MetaForm> { /* private fields */ }
Expand description

A type specification.

This contains the actual type as well as an optional compile-time known displayed representation of the type. This is useful for cases where the type is used through a type alias in order to provide information about the alias name.

Examples

Consider the following Rust function:

fn is_sorted(input: &[i32], pred: Predicate) -> bool;

In this above example input would have no displayable name, preds display name is Predicate and the display name of the return type is simply bool. Note that Predicate could simply be a type alias to fn(i32, i32) -> Ordering.

Implementations§

source§

impl TypeSpec

source

pub fn with_name_str<T>(display_name: &'static str) -> Selfwhere T: TypeInfo + 'static,

Creates a new type specification with a display name.

The name is any valid Rust identifier or path.

Examples

Valid display names are foo, foo::bar, foo::bar::Baz, etc.

Panics

Panics if the given display name is invalid.

source

pub fn with_name_segs<T, S>(segments: S) -> Selfwhere T: TypeInfo + 'static, S: IntoIterator<Item = &'static str>,

Creates a new type specification with a display name represented by the given path segments.

The display name segments all must be valid Rust identifiers.

Examples

Valid display names are foo, foo::bar, foo::bar::Baz, etc.

Panics

Panics if the given display name is invalid.

source

pub fn of_type<T>() -> Selfwhere T: TypeInfo + 'static,

Creates a new type specification without a display name.

Example:

ReturnTypeSpec::new(TypeSpec::of_type::<i32>()); // return type of `i32`
source§

impl<F> TypeSpec<F>where F: Form,

source

pub fn ty(&self) -> &F::Type

Returns the actual type.

source

pub fn display_name(&self) -> &DisplayName<F>

Returns the compile-time known displayed representation of the type.

source

pub fn new(ty: <F as Form>::Type, display_name: DisplayName<F>) -> Self

Creates a new type specification for a given type and display name.

Trait Implementations§

source§

impl<F: Debug + Form> Debug for TypeSpec<F>where F::Type: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TypeSpec<MetaForm>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Default for TypeSpec<PortableForm>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de, F: Form> Deserialize<'de> for TypeSpec<F>where F::Type: DeserializeOwned, F::String: DeserializeOwned,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl IntoPortable for TypeSpec

§

type Output = TypeSpec<PortableForm>

The portable version of Self.
source§

fn into_portable(self, registry: &mut Registry) -> Self::Output

Convert self to the portable form by using the registry for caching.
source§

impl<F: PartialEq + Form> PartialEq<TypeSpec<F>> for TypeSpec<F>where F::Type: PartialEq,

source§

fn eq(&self, other: &TypeSpec<F>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F: Form> Serialize for TypeSpec<F>where F::Type: Serialize, F::String: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<F: Eq + Form> Eq for TypeSpec<F>where F::Type: Eq,

source§

impl<F: Form> StructuralEq for TypeSpec<F>

source§

impl<F: Form> StructuralPartialEq for TypeSpec<F>

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for TypeSpec<F>where <F as Form>::String: RefUnwindSafe, <F as Form>::Type: RefUnwindSafe,

§

impl<F> Send for TypeSpec<F>where <F as Form>::String: Send, <F as Form>::Type: Send,

§

impl<F> Sync for TypeSpec<F>where <F as Form>::String: Sync, <F as Form>::Type: Sync,

§

impl<F> Unpin for TypeSpec<F>where <F as Form>::String: Unpin, <F as Form>::Type: Unpin,

§

impl<F> UnwindSafe for TypeSpec<F>where <F as Form>::String: UnwindSafe, <F as Form>::Type: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,