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) -> Self
where 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) -> Self
where 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>() -> Self
where 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: Form + JsonSchema> JsonSchema for TypeSpec<F>

source§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
source§

fn json_schema(gen: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
source§

impl<F: PartialEq + Form> PartialEq 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> StructuralPartialEq for TypeSpec<F>

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

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

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

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 T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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

§

impl<T> JsonSchemaMaybe for T
where T: JsonSchema,

§

impl<T> TypeId for T
where T: Debug + Default,