LimitedStr

Struct LimitedStr 

Source
pub struct LimitedStr<'a, const N: usize = 1024>(/* private fields */);
Expand description

Wrapped string to fit given amount of bytes.

The Cow is used to avoid allocating a new String when the LimitedStr is created from a &str.

Plain str is not used because it can’t be properly encoded/decoded via scale codec.

Implementations§

Source§

impl<'a, const N: usize> LimitedStr<'a, N>

Source

pub const MAX_LEN: usize = N

Maximum length of the string.

Source

pub fn try_new<S: Into<Cow<'a, str>>>(s: S) -> Result<Self, LimitedStrError>

Constructs a limited string from a string.

Checks the size of the string.

Source

pub fn truncated<S: Into<Cow<'a, str>>>(s: S) -> Self

Constructs a limited string from a string truncating it if it’s too long.

Source

pub const fn from_small_str(s: &'static str) -> Self

Constructs a limited string from a static string literal small enough to fit the limit.

Should be used only with static string literals. In that case it can check the string length in compile time.

§Panics

Can panic in runtime if the passed string is not a static string literal and is too long.

Source

pub fn as_str(&self) -> &str

Return string slice.

Source

pub fn into_inner(self) -> Cow<'a, str>

Return inner value.

Trait Implementations§

Source§

impl<'a, const N: usize, __AsT: ?Sized> AsRef<__AsT> for LimitedStr<'a, N>
where Cow<'a, str>: AsRef<__AsT>,

Source§

fn as_ref(&self) -> &__AsT

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<'a, const N: usize> Clone for LimitedStr<'a, N>

Source§

fn clone(&self) -> LimitedStr<'a, N>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a, const N: usize> Debug for LimitedStr<'a, N>

Source§

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

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

impl<'a, const N: usize> Decode for LimitedStr<'a, N>

Source§

fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>

Attempt to deserialise the value from input.
Source§

fn decode_into<I>( input: &mut I, dst: &mut MaybeUninit<Self>, ) -> Result<DecodeFinished, Error>
where I: Input,

Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
Source§

fn skip<I>(input: &mut I) -> Result<(), Error>
where I: Input,

Attempt to skip the encoded value from input. Read more
Source§

fn encoded_fixed_size() -> Option<usize>

Returns the fixed encoded size of the type. Read more
Source§

impl<'a, const N: usize> DecodeAsFields for LimitedStr<'a, N>

Source§

fn decode_as_fields<'info, R: TypeResolver>( input: &mut &[u8], fields: &mut dyn FieldIter<'info, R::TypeId>, types: &'info R, ) -> Result<Self, Error>

Given some bytes and some fields denoting their structure, attempt to decode.
Source§

impl<'a, const N: usize> Default for LimitedStr<'a, N>

Source§

fn default() -> LimitedStr<'a, N>

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

impl<'a, const N: usize> Deref for LimitedStr<'a, N>
where Cow<'a, str>: Deref,

Source§

type Target = <Cow<'a, str> as Deref>::Target

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'a, const N: usize> Display for LimitedStr<'a, N>

Source§

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

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

impl<'a, const N: usize> Encode for LimitedStr<'a, N>

Source§

fn size_hint(&self) -> usize

If possible give a hint of expected size of the encoding. Read more
Source§

fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )

Convert self to a slice and append it to the destination.
Source§

fn encode(&self) -> Vec<u8>

Convert self to an owned vector.
Source§

fn using_encoded<__CodecOutputReturn, __CodecUsingEncodedCallback: FnOnce(&[u8]) -> __CodecOutputReturn>( &self, f: __CodecUsingEncodedCallback, ) -> __CodecOutputReturn

Convert self to a slice and then invoke the given closure with it.
Source§

fn encoded_size(&self) -> usize

Calculates the encoded size. Read more
Source§

impl<'a, const N: usize> EncodeAsFields for LimitedStr<'a, N>

Source§

fn encode_as_fields_to<ScaleEncodeResolver: TypeResolver>( &self, __encode_as_type_fields: &mut dyn FieldIter<'_, ScaleEncodeResolver::TypeId>, __encode_as_type_types: &ScaleEncodeResolver, __encode_as_type_out: &mut Vec<u8>, ) -> Result<(), Error>

Given some fields describing the shape of a type, attempt to encode to that shape.
Source§

fn encode_as_fields<R>( &self, fields: &mut dyn FieldIter<'_, <R as TypeResolver>::TypeId, Item = Field<'_, <R as TypeResolver>::TypeId>>, types: &R, ) -> Result<Vec<u8>, Error>
where R: TypeResolver,

This is a helper function which internally calls EncodeAsFields::encode_as_fields_to. Prefer to implement that instead.
Source§

impl<'a, const N: usize> EncodeAsType for LimitedStr<'a, N>

Source§

fn encode_as_type_to<ScaleEncodeResolver: TypeResolver>( &self, __encode_as_type_type_id: ScaleEncodeResolver::TypeId, __encode_as_type_types: &ScaleEncodeResolver, __encode_as_type_out: &mut Vec<u8>, ) -> Result<(), Error>

Given some type_id, types, a context and some output target for the SCALE encoded bytes, attempt to SCALE encode the current value into the type given by type_id.
Source§

fn encode_as_type<R>( &self, type_id: <R as TypeResolver>::TypeId, types: &R, ) -> Result<Vec<u8>, Error>
where R: TypeResolver,

This is a helper function which internally calls EncodeAsType::encode_as_type_to. Prefer to implement that instead.
Source§

impl From<LimitedStr<'_>> for PanicBuffer

Source§

fn from(value: LimitedStr<'_>) -> Self

Converts to this type from the input type.
Source§

impl<'a, const N: usize> From<LimitedStr<'a, N>> for Cow<'a, str>

Source§

fn from(value: LimitedStr<'a, N>) -> Self

Converts to this type from the input type.
Source§

impl<'a, const N: usize> Hash for LimitedStr<'a, N>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'a, const N: usize> IntoVisitor for LimitedStr<'a, N>

Source§

type AnyVisitor<ScaleDecodeTypeResolver: TypeResolver> = Visitor<'a, N, ScaleDecodeTypeResolver>

The visitor type used to decode SCALE encoded bytes to Self.
Source§

fn into_visitor<ScaleDecodeTypeResolver: TypeResolver>() -> Self::AnyVisitor<ScaleDecodeTypeResolver>

A means of obtaining this visitor.
Source§

impl<'a, const N: usize> Ord for LimitedStr<'a, N>

Source§

fn cmp(&self, other: &LimitedStr<'a, N>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<'a, const N: usize> PartialEq for LimitedStr<'a, N>

Source§

fn eq(&self, other: &LimitedStr<'a, N>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, const N: usize> PartialOrd for LimitedStr<'a, N>

Source§

fn partial_cmp(&self, other: &LimitedStr<'a, N>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'a> TryFrom<&'a str> for LimitedStr<'a>

Source§

type Error = LimitedStrError

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

fn try_from(value: &'a str) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a> TryFrom<String> for LimitedStr<'a>

Source§

type Error = LimitedStrError

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

fn try_from(value: String) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a, const N: usize> TypeInfo for LimitedStr<'a, N>
where 'a: 'static,

Source§

type Identity = LimitedStr<'a, N>

The type identifying for which type info is provided. Read more
Source§

fn type_info() -> Type

Returns the static type identifier for Self.
Source§

impl<'a, const N: usize> EncodeLike for LimitedStr<'a, N>

Source§

impl<'a, const N: usize> Eq for LimitedStr<'a, N>

Source§

impl<'a, const N: usize> StructuralPartialEq for LimitedStr<'a, N>

Auto Trait Implementations§

§

impl<'a, const N: usize> Freeze for LimitedStr<'a, N>

§

impl<'a, const N: usize> RefUnwindSafe for LimitedStr<'a, N>

§

impl<'a, const N: usize> Send for LimitedStr<'a, N>

§

impl<'a, const N: usize> Sync for LimitedStr<'a, N>

§

impl<'a, const N: usize> Unpin for LimitedStr<'a, N>

§

impl<'a, const N: usize> UnwindSafe for LimitedStr<'a, N>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DecodeAll for T
where T: Decode,

Source§

fn decode_all(input: &mut &[u8]) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
Source§

impl<T> DecodeAsType for T
where T: IntoVisitor,

Source§

fn decode_as_type_maybe_compact<R>( input: &mut &[u8], type_id: <R as TypeResolver>::TypeId, types: &R, is_compact: bool, ) -> Result<T, Error>
where R: TypeResolver,

Source§

fn decode_as_type<R>( input: &mut &[u8], type_id: <R as TypeResolver>::TypeId, types: &R, ) -> Result<Self, Error>
where R: TypeResolver,

Given some input bytes, a type_id, and type registry, attempt to decode said bytes into Self. Implementations should modify the &mut reference to the bytes such that any bytes not used in the course of decoding are still pointed to after decoding is complete.
Source§

impl<T> DecodeLimit for T
where T: Decode,

Source§

fn decode_all_with_depth_limit( limit: u32, input: &mut &[u8], ) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
Source§

fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>
where I: Input,

Decode Self with the given maximum recursion depth and advance input by the number of bytes consumed. 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> KeyedVec for T
where T: Codec,

Source§

fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8>

Return an encoding of Self prepended by given slice.
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

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>,

Source§

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<S> Codec for S
where S: Decode + Encode,

Source§

impl<T> EncodeLike<&&T> for T
where T: Encode,

Source§

impl<T> EncodeLike<&T> for T
where T: Encode,

Source§

impl<T> EncodeLike<&mut T> for T
where T: Encode,

Source§

impl<T> EncodeLike<Arc<T>> for T
where T: Encode,

Source§

impl<T> EncodeLike<Box<T>> for T
where T: Encode,

Source§

impl<T> EncodeLike<Cow<'_, T>> for T
where T: ToOwned + Encode,

Source§

impl<T> EncodeLike<Rc<T>> for T
where T: Encode,

Source§

impl<S> FullCodec for S
where S: Decode + FullEncode,

Source§

impl<S> FullEncode for S
where S: Encode + EncodeLike,

Source§

impl<T> JsonSchemaMaybe for T

Source§

impl<T> StaticTypeInfo for T
where T: TypeInfo + 'static,

Source§

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