Trait sp_std::convert::AsRef

1.0.0 · source ·
pub trait AsRef<T>where
    T: ?Sized,{
    // Required method
    fn as_ref(&self) -> &T;
}
Expand description

Used to do a cheap reference-to-reference conversion.

This trait is similar to AsMut which is used for converting between mutable references. If you need to do a costly conversion it is better to implement From with type &T or write a custom function.

Relation to Borrow

AsRef has the same signature as Borrow, but Borrow is different in a few aspects:

  • Unlike AsRef, Borrow has a blanket impl for any T, and can be used to accept either a reference or a value. (See also note on AsRef’s reflexibility below.)
  • Borrow also requires that Hash, Eq and Ord for a borrowed value are equivalent to those of the owned value. For this reason, if you want to borrow only a single field of a struct you can implement AsRef, but not Borrow.

Note: This trait must not fail. If the conversion can fail, use a dedicated method which returns an Option<T> or a Result<T, E>.

Generic Implementations

AsRef auto-dereferences if the inner type is a reference or a mutable reference (e.g.: foo.as_ref() will work the same if foo has type &mut Foo or &&mut Foo).

Note that due to historic reasons, the above currently does not hold generally for all dereferenceable types, e.g. foo.as_ref() will not work the same as Box::new(foo).as_ref(). Instead, many smart pointers provide an as_ref implementation which simply returns a reference to the pointed-to value (but do not perform a cheap reference-to-reference conversion for that value). However, AsRef::as_ref should not be used for the sole purpose of dereferencing; instead Deref coercion’ can be used:

let x = Box::new(5i32);
// Avoid this:
// let y: &i32 = x.as_ref();
// Better just write:
let y: &i32 = &x;

Types which implement Deref should consider implementing AsRef<T> as follows:

impl<T> AsRef<T> for SomeType
where
    T: ?Sized,
    <SomeType as Deref>::Target: AsRef<T>,
{
    fn as_ref(&self) -> &T {
        self.deref().as_ref()
    }
}

Reflexivity

Ideally, AsRef would be reflexive, i.e. there would be an impl<T: ?Sized> AsRef<T> for T with as_ref simply returning its argument unchanged. Such a blanket implementation is currently not provided due to technical restrictions of Rust’s type system (it would be overlapping with another existing blanket implementation for &T where T: AsRef<U> which allows AsRef to auto-dereference, see “Generic Implementations” above).

A trivial implementation of AsRef<T> for T must be added explicitly for a particular type T where needed or desired. Note, however, that not all types from std contain such an implementation, and those cannot be added by external code due to orphan rules.

Examples

By using trait bounds we can accept arguments of different types as long as they can be converted to the specified type T.

For example: By creating a generic function that takes an AsRef<str> we express that we want to accept all references that can be converted to &str as an argument. Since both String and &str implement AsRef<str> we can accept both as input argument.

fn is_hello<T: AsRef<str>>(s: T) {
   assert_eq!("hello", s.as_ref());
}

let s = "hello";
is_hello(s);

let s = "hello".to_string();
is_hello(s);

Required Methods§

source

fn as_ref(&self) -> &T

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

Implementors§

source§

impl AsRef<str> for str

source§

impl AsRef<str> for String

1.7.0 · source§

impl AsRef<CStr> for CString

1.7.0 · source§

impl AsRef<CStr> for CStr

source§

impl AsRef<OsStr> for Component<'_>

source§

impl AsRef<OsStr> for str

source§

impl AsRef<OsStr> for String

source§

impl AsRef<OsStr> for OsStr

source§

impl AsRef<OsStr> for OsString

source§

impl AsRef<OsStr> for Components<'_>

source§

impl AsRef<OsStr> for std::path::Iter<'_>

source§

impl AsRef<OsStr> for Path

source§

impl AsRef<OsStr> for PathBuf

1.8.0 · source§

impl AsRef<Path> for Cow<'_, OsStr>

1.25.0 · source§

impl AsRef<Path> for Component<'_>

source§

impl AsRef<Path> for str

source§

impl AsRef<Path> for String

source§

impl AsRef<Path> for OsStr

source§

impl AsRef<Path> for OsString

source§

impl AsRef<Path> for Components<'_>

source§

impl AsRef<Path> for std::path::Iter<'_>

source§

impl AsRef<Path> for Path

source§

impl AsRef<Path> for PathBuf

source§

impl AsRef<[u8]> for str

source§

impl AsRef<[u8]> for String

1.55.0 · source§

impl<'a> AsRef<str> for alloc::string::Drain<'a>

1.55.0 · source§

impl<'a> AsRef<[u8]> for alloc::string::Drain<'a>

1.46.0 · source§

impl<'a, T, A> AsRef<[T]> for sp_std::vec::Drain<'a, T, A>where A: Allocator,

source§

impl<T> AsRef<[T]> for [T]

1.13.0 · source§

impl<T> AsRef<[T]> for sp_std::slice::Iter<'_, T>

1.53.0 · source§

impl<T> AsRef<[T]> for IterMut<'_, T>

source§

impl<T> AsRef<T> for Cow<'_, T>where T: ToOwned + ?Sized,

1.5.0 · source§

impl<T> AsRef<T> for Rc<T>where T: ?Sized,

1.5.0 · source§

impl<T> AsRef<T> for Arc<T>where T: ?Sized,

1.46.0 · source§

impl<T, A> AsRef<[T]> for IntoIter<T, A>where A: Allocator,

source§

impl<T, A> AsRef<[T]> for Vec<T, A>where A: Allocator,

source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>where A: Allocator,

1.5.0 · source§

impl<T, A> AsRef<T> for Box<T, A>where A: Allocator, T: ?Sized,

source§

impl<T, U> AsRef<U> for &Twhere T: AsRef<U> + ?Sized, U: ?Sized,

source§

impl<T, U> AsRef<U> for &mut Twhere T: AsRef<U> + ?Sized, U: ?Sized,

source§

impl<T, const N: usize> AsRef<[T; N]> for Simd<T, N>where LaneCount<N>: SupportedLaneCount, T: SimdElement,

source§

impl<T, const N: usize> AsRef<[T]> for [T; N]

source§

impl<T, const N: usize> AsRef<[T]> for Simd<T, N>where LaneCount<N>: SupportedLaneCount, T: SimdElement,

impl AsRef<dyn Error + Sync + Send> for Error

impl AsRef<dyn Error> for Error

impl<const CAP: usize> AsRef<str> for ArrayString<CAP>

impl<T, const CAP: usize> AsRef<[T]> for ArrayVec<T, CAP>

impl<T, U> AsRef<T> for Cow<'_, T, U>where T: Beef + ?Sized, U: Capacity,

impl AsRef<str> for Mnemonic

impl AsRef<[u8]> for Seed

impl<M, T, O> AsRef<bool> for BitRef<'_, M, T, O>where M: Mutability, T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitSlice<T, O>> for BitSlice<T, O>where T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitSlice<T, O>> for Drain<'_, T, O>where T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitSlice<T, O>> for BitBox<T, O>where T: BitStore, O: BitOrder,

impl<A, O> AsRef<BitSlice<<A as BitView>::Store, O>> for BitArray<A, O>where A: BitViewSized, O: BitOrder,

impl<T, O> AsRef<BitSlice<T, O>> for Iter<'_, T, O>where T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitSlice<<T as BitStore>::Alias, O>> for IterMut<'_, T, O>where T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitSlice<T, O>> for IntoIter<T, O>where T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitVec<T, O>> for BitVec<T, O>where T: BitStore, O: BitOrder,

impl<T, O> AsRef<BitSlice<T, O>> for BitVec<T, O>where T: BitStore, O: BitOrder,

impl AsRef<[u8]> for Hash

impl AsRef<[u8]> for Hash

impl<T, const L: usize, const U: usize> AsRef<[T]> for BoundedVec<T, L, U>

impl<T, const L: usize, const U: usize> AsRef<Vec<T, Global>> for BoundedVec<T, L, U>

impl AsRef<BStr> for str

impl AsRef<BStr> for [u8]

impl AsRef<[u8]> for BStr

impl AsRef<[u8]> for BString

impl AsRef<BStr> for BString

impl AsRef<[u8]> for Bytes

impl AsRef<[u8]> for BytesMut

impl AsRef<str> for Vendor

impl AsRef<str> for Panic

impl AsRef<str> for Env

impl AsRef<[Family]> for Families

impl AsRef<str> for Arch

impl AsRef<str> for Os

impl AsRef<str> for Triple

impl AsRef<str> for Family

impl AsRef<str> for Str

impl AsRef<OsStr> for OsStr

impl AsRef<OsStr> for Str

impl AsRef<Path> for OsStr

impl AsRef<[u8]> for Str

impl AsRef<Path> for Str

impl AsRef<str> for Id

impl<T: ?Sized + Pointable> AsRef<T> for Owned<T>

impl<const LIMBS: usize> AsRef<[Limb]> for UInt<LIMBS>

impl<T> AsRef<T> for NonZero<T>where T: Zero,

impl<const LIMBS: usize> AsRef<[u64; LIMBS]> for UInt<LIMBS>

impl AsRef<[u8]> for Document

impl<'a, T> AsRef<T> for EncodeRef<'a, T>

impl AsRef<[u8]> for TeletexStringRef<'_>

impl AsRef<[u8]> for Ia5StringRef<'_>

impl AsRef<[u8]> for OctetString

impl AsRef<[u8]> for VideotexStringRef<'_>

impl AsRef<str> for TeletexStringRef<'_>

impl AsRef<[u8]> for PrintableStringRef<'_>

impl<'a, T> AsRef<T> for EncodeValueRef<'a, T>

impl AsRef<[u8]> for Utf8StringRef<'_>

impl AsRef<str> for Ia5StringRef<'_>

impl AsRef<[u8]> for OctetStringRef<'_>

impl<T> AsRef<[T]> for SetOfVec<T>where T: DerOrd,

impl AsRef<str> for Utf8StringRef<'_>

impl<C> AsRef<[u8]> for Signature<C>where C: PrimeCurve, SignatureSize<C>: ArrayLength<u8>,

impl<C> AsRef<[u8]> for Signature<C>where C: PrimeCurve, MaxSize<C>: ArrayLength<u8>, <FieldSize<C> as Add>::Output: Add<MaxOverhead> + ArrayLength<u8>,

impl AsRef<[u8]> for Signature

impl AsRef<[u8]> for SecretKey

impl AsRef<[u8]> for PublicKey

impl AsRef<[u8]> for SigningKey

impl<L, R> AsRef<CStr> for Either<L, R>where L: AsRef<CStr>, R: AsRef<CStr>,

impl<L, R, Target> AsRef<[Target]> for Either<L, R>where L: AsRef<[Target]>, R: AsRef<[Target]>,

impl<L, R> AsRef<OsStr> for Either<L, R>where L: AsRef<OsStr>, R: AsRef<OsStr>,

impl<L, R> AsRef<Path> for Either<L, R>where L: AsRef<Path>, R: AsRef<Path>,

impl<L, R, Target> AsRef<Target> for Either<L, R>where L: AsRef<Target>, R: AsRef<Target>,

impl<L, R> AsRef<str> for Either<L, R>where L: AsRef<str>, R: AsRef<str>,

impl<C> AsRef<[Limb]> for ScalarCore<C>where C: Curve,

impl<T: AsRef<[u8]>> AsRef<[u8]> for Window<T>

impl<T> AsRef<[T; 29]> for GenericArray<T, U29>

impl<T> AsRef<[T; 32]> for GenericArray<T, U32>

impl<T> AsRef<[T; 4]> for GenericArray<T, U4>

impl<T> AsRef<[T; 43]> for GenericArray<T, U43>

impl<T> AsRef<[T; 36]> for GenericArray<T, U36>

impl<T> AsRef<[T; 25]> for GenericArray<T, U25>

impl<T> AsRef<[T; 128]> for GenericArray<T, U128>

impl<T> AsRef<[T; 15]> for GenericArray<T, U15>

impl<T> AsRef<[T; 10]> for GenericArray<T, U10>

impl<T> AsRef<[T; 51]> for GenericArray<T, U51>

impl<T> AsRef<[T; 40]> for GenericArray<T, U40>

impl<T> AsRef<[T; 47]> for GenericArray<T, U47>

impl<T> AsRef<[T; 33]> for GenericArray<T, U33>

impl<T> AsRef<[T; 28]> for GenericArray<T, U28>

impl<T> AsRef<[T; 256]> for GenericArray<T, U256>

impl<T> AsRef<[T; 500]> for GenericArray<T, U500>

impl<T> AsRef<[T; 57]> for GenericArray<T, U57>

impl<T> AsRef<[T; 1]> for GenericArray<T, U1>

impl<T> AsRef<[T; 26]> for GenericArray<T, U26>

impl<T> AsRef<[T; 54]> for GenericArray<T, U54>

impl<T> AsRef<[T; 70]> for GenericArray<T, U70>

impl<T> AsRef<[T; 48]> for GenericArray<T, U48>

impl<T> AsRef<[T; 80]> for GenericArray<T, U80>

impl<T> AsRef<[T; 62]> for GenericArray<T, U62>

impl<T> AsRef<[T; 34]> for GenericArray<T, U34>

impl<T> AsRef<[T; 3]> for GenericArray<T, U3>

impl<T> AsRef<[T; 58]> for GenericArray<T, U58>

impl<T> AsRef<[T; 27]> for GenericArray<T, U27>

impl<T> AsRef<[T; 400]> for GenericArray<T, U400>

impl<T> AsRef<[T; 300]> for GenericArray<T, U300>

impl<T> AsRef<[T; 46]> for GenericArray<T, U46>

impl<T> AsRef<[T; 18]> for GenericArray<T, U18>

impl<T> AsRef<[T; 30]> for GenericArray<T, U30>

impl<T> AsRef<[T; 50]> for GenericArray<T, U50>

impl<T> AsRef<[T; 2]> for GenericArray<T, U2>

impl<T> AsRef<[T; 90]> for GenericArray<T, U90>

impl<T> AsRef<[T; 12]> for GenericArray<T, U12>

impl<T> AsRef<[T; 45]> for GenericArray<T, U45>

impl<T> AsRef<[T; 37]> for GenericArray<T, U37>

impl<T> AsRef<[T; 21]> for GenericArray<T, U21>

impl<T, N> AsRef<[T]> for GenericArray<T, N>where N: ArrayLength<T>,

impl<T> AsRef<[T; 6]> for GenericArray<T, U6>

impl<T> AsRef<[T; 5]> for GenericArray<T, U5>

impl<T> AsRef<[T; 41]> for GenericArray<T, U41>

impl<T> AsRef<[T; 23]> for GenericArray<T, U23>

impl<T> AsRef<[T; 9]> for GenericArray<T, U9>

impl<T> AsRef<[T; 38]> for GenericArray<T, U38>

impl<T> AsRef<[T; 61]> for GenericArray<T, U61>

impl<T> AsRef<[T; 35]> for GenericArray<T, U35>

impl<T> AsRef<[T; 200]> for GenericArray<T, U200>

impl<T> AsRef<[T; 512]> for GenericArray<T, U512>

impl<T> AsRef<[T; 49]> for GenericArray<T, U49>

impl<T> AsRef<[T; 7]> for GenericArray<T, U7>

impl<T> AsRef<[T; 8]> for GenericArray<T, U8>

impl<T> AsRef<[T; 64]> for GenericArray<T, U64>

impl<T> AsRef<[T; 63]> for GenericArray<T, U63>

impl<T> AsRef<[T; 39]> for GenericArray<T, U39>

impl<T> AsRef<[T; 22]> for GenericArray<T, U22>

impl<T> AsRef<[T; 16]> for GenericArray<T, U16>

impl<T> AsRef<[T; 42]> for GenericArray<T, U42>

impl<T> AsRef<[T; 20]> for GenericArray<T, U20>

impl<T> AsRef<[T; 24]> for GenericArray<T, U24>

impl<T> AsRef<[T; 13]> for GenericArray<T, U13>

impl<T> AsRef<[T; 60]> for GenericArray<T, U60>

impl<T> AsRef<[T; 53]> for GenericArray<T, U53>

impl<T> AsRef<[T; 44]> for GenericArray<T, U44>

impl<T> AsRef<[T; 59]> for GenericArray<T, U59>

impl<T> AsRef<[T; 11]> for GenericArray<T, U11>

impl<T> AsRef<[T; 52]> for GenericArray<T, U52>

impl<T> AsRef<[T; 17]> for GenericArray<T, U17>

impl<T> AsRef<[T; 14]> for GenericArray<T, U14>

impl<T> AsRef<[T; 31]> for GenericArray<T, U31>

impl<T> AsRef<[T; 55]> for GenericArray<T, U55>

impl<T> AsRef<[T; 100]> for GenericArray<T, U100>

impl<T> AsRef<[T; 19]> for GenericArray<T, U19>

impl<T> AsRef<[T; 56]> for GenericArray<T, U56>

impl AsRef<[u8]> for Protocol

impl AsRef<str> for Authority

impl AsRef<str> for HeaderName

impl<T> AsRef<str> for Port<T>where T: AsRef<str>,

impl AsRef<[u8]> for HeaderValue

impl AsRef<str> for Scheme

impl AsRef<[u8]> for HeaderName

impl AsRef<str> for Method

impl AsRef<[u8]> for ReasonPhrase

impl AsRef<[u8]> for Protocol

impl AsRef<Array> for Array

impl AsRef<Object> for WeakMap

impl AsRef<JsValue> for Date

impl AsRef<Object> for Date

impl AsRef<Symbol> for Symbol

impl AsRef<Table> for Table

impl AsRef<Proxy> for Proxy

impl AsRef<Memory> for Memory

impl AsRef<JsValue> for RegExp

impl AsRef<JsValue> for BigInt

impl AsRef<Object> for Module

impl AsRef<JsValue> for Module

impl AsRef<Object> for Memory

impl AsRef<JsValue> for Array

impl AsRef<RegExp> for RegExp

impl AsRef<JsValue> for Set

impl AsRef<Number> for Number

impl AsRef<Set> for Set

impl AsRef<Object> for Boolean

impl AsRef<JsValue> for Symbol

impl AsRef<Object> for Promise

impl AsRef<Object> for Array

impl AsRef<Object> for WeakSet

impl AsRef<JsValue> for Number

impl AsRef<Date> for Date

impl AsRef<Global> for Global

impl AsRef<Error> for UriError

impl AsRef<JsValue> for Map

impl AsRef<Object> for Object

impl AsRef<JsValue> for Object

impl AsRef<JsValue> for Proxy

impl AsRef<Object> for Global

impl AsRef<BigInt> for BigInt

impl AsRef<Module> for Module

impl AsRef<Object> for RegExp

impl AsRef<JsValue> for Table

impl AsRef<Object> for Error

impl AsRef<JsValue> for Memory

impl AsRef<Object> for BigInt

impl AsRef<Object> for Set

impl AsRef<Object> for Number

impl AsRef<Object> for Map

impl AsRef<Object> for Table

impl AsRef<Map> for Map

impl AsRef<JsValue> for Global

impl AsRef<Error> for Error

impl AsRef<JsValue> for Error

impl AsRef<[u8]> for Signature

impl AsRef<[u8]> for SecretKey

impl AsRef<Multihash<64>> for PeerId

impl<TKey: AsRef<KeyBytes>, TVal> AsRef<KeyBytes> for EntryView<TKey, TVal>

impl AsRef<[u8]> for Key

impl<T> AsRef<KeyBytes> for Key<T>

impl AsRef<[u8]> for X25519

impl<T: AsRef<[u8]> + Zeroize> AsRef<[u8]> for SecretKey<T>

impl AsRef<[u8]> for X25519Spec

impl<T: AsRef<[u8]>> AsRef<[u8]> for PublicKey<T>

impl AsRef<[u8]> for Data

impl<D: Digest> AsRef<[u8]> for SharedSecret<D>

impl AsRef<[u8]> for SignatureArray

impl AsRef<[u8]> for MmapMut

impl AsRef<[u8]> for Mmap

impl AsRef<[u8]> for Multiaddr

impl<T, S> AsRef<[T; 4]> for Matrix<T, U4, U1, S>where T: Scalar, S: ContiguousStorage<T, U4, U1>,

impl<T: Scalar, S> AsRef<[[T; 6]; 4]> for Matrix<T, U6, U4, S>where S: ContiguousStorage<T, U6, U4>,

impl<T, S> AsRef<[T; 8]> for Matrix<T, U1, U8, S>where T: Scalar, S: ContiguousStorage<T, U1, U8>,

impl<T, S> AsRef<[T; 15]> for Matrix<T, U1, U15, S>where T: Scalar, S: ContiguousStorage<T, U1, U15>,

impl<T> AsRef<T> for Unit<T>

impl<T, S> AsRef<[T; 15]> for Matrix<T, U15, U1, S>where T: Scalar, S: ContiguousStorage<T, U15, U1>,

impl<T: Scalar, S> AsRef<[[T; 3]; 3]> for Matrix<T, U3, U3, S>where S: ContiguousStorage<T, U3, U3>,

impl<T, S> AsRef<[T; 1]> for Matrix<T, U1, U1, S>where T: Scalar, S: ContiguousStorage<T, U1, U1>,

impl<T, S> AsRef<[T; 9]> for Matrix<T, U1, U9, S>where T: Scalar, S: ContiguousStorage<T, U1, U9>,

impl<T, S> AsRef<[T; 7]> for Matrix<T, U7, U1, S>where T: Scalar, S: ContiguousStorage<T, U7, U1>,

impl<T: Scalar, S> AsRef<[[T; 4]; 5]> for Matrix<T, U4, U5, S>where S: ContiguousStorage<T, U4, U5>,

impl<T: Scalar, S> AsRef<[[T; 3]; 6]> for Matrix<T, U3, U6, S>where S: ContiguousStorage<T, U3, U6>,

impl<T, S> AsRef<[T; 12]> for Matrix<T, U1, U12, S>where T: Scalar, S: ContiguousStorage<T, U1, U12>,

impl<T: Scalar, S> AsRef<[[T; 4]; 2]> for Matrix<T, U4, U2, S>where S: ContiguousStorage<T, U4, U2>,

impl<T, S> AsRef<[T; 10]> for Matrix<T, U1, U10, S>where T: Scalar, S: ContiguousStorage<T, U1, U10>,

impl<T, S> AsRef<[T; 11]> for Matrix<T, U11, U1, S>where T: Scalar, S: ContiguousStorage<T, U11, U1>,

impl<T: Scalar, S> AsRef<[[T; 2]; 3]> for Matrix<T, U2, U3, S>where S: ContiguousStorage<T, U2, U3>,

impl<T, S> AsRef<[T; 3]> for Matrix<T, U1, U3, S>where T: Scalar, S: ContiguousStorage<T, U1, U3>,

impl<T: Scalar, S> AsRef<[[T; 2]; 6]> for Matrix<T, U2, U6, S>where S: ContiguousStorage<T, U2, U6>,

impl<T, S> AsRef<[T; 6]> for Matrix<T, U1, U6, S>where T: Scalar, S: ContiguousStorage<T, U1, U6>,

impl<T, S> AsRef<[T; 5]> for Matrix<T, U1, U5, S>where T: Scalar, S: ContiguousStorage<T, U1, U5>,

impl<T: Scalar, S> AsRef<[[T; 5]; 3]> for Matrix<T, U5, U3, S>where S: ContiguousStorage<T, U5, U3>,

impl<T, S> AsRef<[T; 5]> for Matrix<T, U5, U1, S>where T: Scalar, S: ContiguousStorage<T, U5, U1>,

impl<T: Scalar, S> AsRef<[[T; 3]; 2]> for Matrix<T, U3, U2, S>where S: ContiguousStorage<T, U3, U2>,

impl<T: Scalar, S> AsRef<[[T; 6]; 2]> for Matrix<T, U6, U2, S>where S: ContiguousStorage<T, U6, U2>,

impl<T: Scalar, S> AsRef<[[T; 2]; 2]> for Matrix<T, U2, U2, S>where S: ContiguousStorage<T, U2, U2>,

impl<T, S> AsRef<[T; 3]> for Matrix<T, U3, U1, S>where T: Scalar, S: ContiguousStorage<T, U3, U1>,

impl<T, S> AsRef<[T; 14]> for Matrix<T, U1, U14, S>where T: Scalar, S: ContiguousStorage<T, U1, U14>,

impl<T, S> AsRef<[T; 9]> for Matrix<T, U9, U1, S>where T: Scalar, S: ContiguousStorage<T, U9, U1>,

impl<T: Scalar, S> AsRef<[[T; 5]; 6]> for Matrix<T, U5, U6, S>where S: ContiguousStorage<T, U5, U6>,

impl<T, S> AsRef<[T; 13]> for Matrix<T, U13, U1, S>where T: Scalar, S: ContiguousStorage<T, U13, U1>,

impl<T, S> AsRef<[T; 16]> for Matrix<T, U1, U16, S>where T: Scalar, S: ContiguousStorage<T, U1, U16>,

impl<T, S> AsRef<[T; 7]> for Matrix<T, U1, U7, S>where T: Scalar, S: ContiguousStorage<T, U1, U7>,

impl<T: Scalar, S> AsRef<[[T; 5]; 5]> for Matrix<T, U5, U5, S>where S: ContiguousStorage<T, U5, U5>,

impl<T: Scalar, S> AsRef<[[T; 3]; 4]> for Matrix<T, U3, U4, S>where S: ContiguousStorage<T, U3, U4>,

impl<T: Scalar, S> AsRef<[[T; 3]; 5]> for Matrix<T, U3, U5, S>where S: ContiguousStorage<T, U3, U5>,

impl<T, S> AsRef<[T; 13]> for Matrix<T, U1, U13, S>where T: Scalar, S: ContiguousStorage<T, U1, U13>,

impl<T: Scalar, S> AsRef<[[T; 5]; 2]> for Matrix<T, U5, U2, S>where S: ContiguousStorage<T, U5, U2>,

impl<T: Scalar, S> AsRef<[[T; 4]; 4]> for Matrix<T, U4, U4, S>where S: ContiguousStorage<T, U4, U4>,

impl<T, S> AsRef<[T; 4]> for Matrix<T, U1, U4, S>where T: Scalar, S: ContiguousStorage<T, U1, U4>,

impl<T, S> AsRef<[T; 16]> for Matrix<T, U16, U1, S>where T: Scalar, S: ContiguousStorage<T, U16, U1>,

impl<T, S> AsRef<[T; 2]> for Matrix<T, U1, U2, S>where T: Scalar, S: ContiguousStorage<T, U1, U2>,

impl<T: Scalar, S> AsRef<[[T; 6]; 3]> for Matrix<T, U6, U3, S>where S: ContiguousStorage<T, U6, U3>,

impl<T, S> AsRef<[T; 10]> for Matrix<T, U10, U1, S>where T: Scalar, S: ContiguousStorage<T, U10, U1>,

impl<T: Scalar, S> AsRef<[[T; 6]; 6]> for Matrix<T, U6, U6, S>where S: ContiguousStorage<T, U6, U6>,

impl<T, S> AsRef<[T; 6]> for Matrix<T, U6, U1, S>where T: Scalar, S: ContiguousStorage<T, U6, U1>,

impl<T, S> AsRef<[T; 8]> for Matrix<T, U8, U1, S>where T: Scalar, S: ContiguousStorage<T, U8, U1>,

impl<T, S> AsRef<[T; 12]> for Matrix<T, U12, U1, S>where T: Scalar, S: ContiguousStorage<T, U12, U1>,

impl<T: Scalar, S> AsRef<[[T; 2]; 5]> for Matrix<T, U2, U5, S>where S: ContiguousStorage<T, U2, U5>,

impl<T, S> AsRef<[T; 14]> for Matrix<T, U14, U1, S>where T: Scalar, S: ContiguousStorage<T, U14, U1>,

impl<T: Scalar, S> AsRef<[[T; 5]; 4]> for Matrix<T, U5, U4, S>where S: ContiguousStorage<T, U5, U4>,

impl<T: Scalar, S> AsRef<[[T; 6]; 5]> for Matrix<T, U6, U5, S>where S: ContiguousStorage<T, U6, U5>,

impl<T, S> AsRef<[T; 2]> for Matrix<T, U2, U1, S>where T: Scalar, S: ContiguousStorage<T, U2, U1>,

impl<T: Scalar, S> AsRef<[[T; 4]; 6]> for Matrix<T, U4, U6, S>where S: ContiguousStorage<T, U4, U6>,

impl<T: Scalar, S> AsRef<[[T; 4]; 3]> for Matrix<T, U4, U3, S>where S: ContiguousStorage<T, U4, U3>,

impl<T: Scalar, S> AsRef<[[T; 2]; 4]> for Matrix<T, U2, U4, S>where S: ContiguousStorage<T, U2, U4>,

impl<T, S> AsRef<[T; 11]> for Matrix<T, U1, U11, S>where T: Scalar, S: ContiguousStorage<T, U1, U11>,

impl<I> AsRef<I> for Located<I>

impl<I, S> AsRef<I> for Stateful<I, S>

impl<'a> AsRef<str> for PlusSignStr<'a>

impl<'a> AsRef<str> for MinusSignStr<'a>

impl AsRef<str> for Buffer

impl<'a> AsRef<str> for NanStr<'a>

impl<'a> AsRef<str> for DecimalStr<'a>

impl<'a> AsRef<str> for InfinityStr<'a>

impl<'a> AsRef<str> for SeparatorStr<'a>

impl<T: Float> AsRef<T> for NotNan<T>

impl<T: Float> AsRef<T> for OrderedFloat<T>

impl AsRef<RawOsStr> for str

impl<S> AsRef<S> for SpawnGlue<S>

impl AsRef<Id> for Sibling

impl AsRef<[u8]> for H256

impl AsRef<[u8]> for H768

impl AsRef<[u64]> for U128

impl AsRef<[u8]> for H160

impl AsRef<[u64]> for U256

impl AsRef<[u8]> for H384

impl AsRef<[u8]> for H512

impl AsRef<[u8]> for H128

impl AsRef<[u64]> for U512

impl<T> AsRef<T> for OutputWithMeasurements<T>

impl AsRef<[[u8; 2]]> for WrappedShard

impl AsRef<[u8]> for WrappedShard

impl AsRef<[u8]> for Literal

impl AsRef<[u8]> for Signature

impl AsRef<[u8]> for PublicKey

impl AsRef<[u8]> for Tag

impl AsRef<[u8]> for Document

impl<A> AsRef<[u8]> for Aad<A>where A: AsRef<[u8]>,

impl AsRef<[u8; 12]> for Nonce

impl AsRef<[u8]> for Tag

impl AsRef<[u8]> for Digest

impl AsRef<str> for Error

impl<'a> AsRef<[u8]> for DBPinnableSlice<'a>

impl AsRef<[u8]> for Certificate

impl<E: Epoch> AsRef<E> for IncrementedEpoch<E>

impl<E, ERef> AsRef<E> for ViableEpoch<E, ERef>where ERef: Borrow<E>,

impl AsRef<str> for ProtocolId

impl<Hash, Extrinsic> AsRef<Extrinsic> for Transaction<Hash, Extrinsic>

impl AsRef<[u8]> for PublicKey

impl<Size> AsRef<[u8]> for EncodedPoint<Size>where Size: ModulusSize,

impl AsRef<[u8; 64]> for Signature

impl AsRef<[u8; 32]> for SecretKey

impl AsRef<[u8]> for SharedSecret

impl AsRef<[u8; 32]> for Message

impl AsRef<[u8; 64]> for PublicKey

impl AsRef<[u8; 64]> for Signature

impl AsRef<[u8; 64]> for XOnlyPublicKey

impl AsRef<[u8; 96]> for KeyPair

impl<A: Array> AsRef<[<A as Array>::Item]> for SmallVec<A>

impl AsRef<[u8]> for Storage<'_>

impl AsRef<[u8]> for ByteSlice125<'_>

impl AsRef<Pair> for Pair

impl AsRef<[u8]> for Public

impl AsRef<[u8]> for Public

impl AsRef<[u8]> for Signature

impl AsRef<Pair> for Pair

impl AsRef<[u8]> for Public

impl AsRef<Public> for Public

impl AsRef<[u8]> for Signature

impl AsRef<[u8]> for Signature

impl AsRef<Public> for Public

impl AsRef<Public> for Public

impl AsRef<Pair> for Pair

impl AsRef<[u8]> for Public

impl AsRef<[u8]> for Signature

impl AsRef<Pair> for Pair

impl AsRef<Public> for Public

impl AsRef<[u8]> for Public

impl AsRef<[u8]> for Public

impl<T, S> AsRef<Vec<T, Global>> for BoundedVec<T, S>

impl AsRef<[u8; 64]> for Signature

impl AsRef<Keypair> for Pair

impl<T, S> AsRef<[T]> for WeakBoundedVec<T, S>

impl<T, S> AsRef<Vec<T, Global>> for WeakBoundedVec<T, S>

impl AsRef<[u8]> for Signature

impl<T, S> AsRef<[T]> for BoundedVec<T, S>

impl<K, V, S> AsRef<BTreeMap<K, V, Global>> for BoundedBTreeMap<K, V, S>where K: Ord,

impl AsRef<[u8]> for AccountId32

impl<T, S> AsRef<BTreeSet<T, Global>> for BoundedBTreeSet<T, S>where T: Ord,

impl AsRef<[u8; 32]> for Public

impl AsRef<[u8; 32]> for Public

impl AsRef<[u8; 65]> for Signature

impl AsRef<[u8]> for Signature

impl AsRef<[u8]> for Signature

impl AsRef<[u8]> for Dummy

impl AsRef<[u8; 32]> for AccountId32

impl AsRef<[u8; 64]> for Signature

impl AsRef<[u8]> for Public

impl AsRef<[u8; 32]> for Keyring

impl AsRef<Public> for Keyring

impl AsRef<[u8; 32]> for Keyring

impl AsRef<Public> for Keyring

impl AsRef<[u8]> for MultiSigner

impl AsRef<[u8]> for RuntimeString

impl AsRef<str> for Method

impl AsRef<[u8]> for StorageKey

impl AsRef<Path> for TempDir

impl AsRef<Path> for TempPath

impl AsRef<OsStr> for TempPath

impl<T: MibArg> AsRef<[usize]> for Mib<T>

impl<A: Array> AsRef<[<A as Array>::Item]> for ArrayVec<A>

impl<A: Array> AsRef<[<A as Array>::Item]> for TinyVec<A>

impl<'s, T> AsRef<[T]> for SliceVec<'s, T>

impl AsRef<UnixStream> for ReadHalf<'_>

impl AsRef<TcpStream> for ReadHalf<'_>

impl AsRef<UnixStream> for WriteHalf<'_>

impl AsRef<TcpStream> for WriteHalf<'_>

impl<T> AsRef<Receiver<T>> for ReceiverStream<T>

impl AsRef<str> for Field

impl AsRef<[u8]> for Label

impl AsRef<str> for Url

impl<T: ?Sized> AsRef<JsValue> for Closure<T>

impl<'a> AsRef<[Value]> for RuntimeArgs<'a>

impl AsRef<str> for DnsName

impl AsRef<[u8]> for DnsNameRef<'_>

impl<T: Binary> AsRef<T> for FmtBinary<T>

impl<T: LowerExp> AsRef<T> for FmtLowerExp<T>

impl<T: UpperHex> AsRef<T> for FmtUpperHex<T>

impl<T: UpperExp> AsRef<T> for FmtUpperExp<T>

impl<T: Display> AsRef<T> for FmtDisplay<T>

impl<T: Pointer> AsRef<T> for FmtPointer<T>

impl<T: LowerHex> AsRef<T> for FmtLowerHex<T>

impl<T: Octal> AsRef<T> for FmtOctal<T>

impl<T> AsRef<T> for FmtList<T>where for<'a> &'a T: IntoIterator,

impl AsRef<[u8]> for Packet

impl<T, Z> AsRef<T> for Zeroizing<Z>where T: ?Sized, Z: AsRef<T> + Zeroize,