Trait 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§

1.0.0 · Source

fn as_ref(&self) -> &T

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

Implementors§

1.0.0 · Source§

impl AsRef<str> for str

1.0.0 · Source§

impl AsRef<str> for String

Source§

impl AsRef<ByteStr> for str

Source§

impl AsRef<ByteStr> for ByteString

Source§

impl AsRef<ByteStr> for ByteStr

1.7.0 · Source§

impl AsRef<CStr> for CString

1.7.0 · Source§

impl AsRef<CStr> for CStr

Source§

impl AsRef<LocalWaker> for Waker

1.0.0 · Source§

impl AsRef<OsStr> for Component<'_>

1.0.0 · Source§

impl AsRef<OsStr> for str

1.0.0 · Source§

impl AsRef<OsStr> for String

1.0.0 · Source§

impl AsRef<OsStr> for OsStr

1.0.0 · Source§

impl AsRef<OsStr> for OsString

1.0.0 · Source§

impl AsRef<OsStr> for Components<'_>

1.0.0 · Source§

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

1.0.0 · Source§

impl AsRef<OsStr> for Path

1.0.0 · 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<'_>

1.0.0 · Source§

impl AsRef<Path> for str

1.0.0 · Source§

impl AsRef<Path> for String

1.0.0 · Source§

impl AsRef<Path> for OsStr

1.0.0 · Source§

impl AsRef<Path> for OsString

1.0.0 · Source§

impl AsRef<Path> for Components<'_>

1.0.0 · Source§

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

1.0.0 · Source§

impl AsRef<Path> for Path

1.0.0 · Source§

impl AsRef<Path> for PathBuf

1.0.0 · Source§

impl AsRef<[u8]> for str

1.0.0 · Source§

impl AsRef<[u8]> for String

Source§

impl AsRef<[u8]> for ByteString

Source§

impl AsRef<[u8]> for ByteStr

1.55.0 · Source§

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

1.55.0 · Source§

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

1.46.0 · Source§

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

Source§

impl<O> AsRef<[u8; 2]> for I16<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 2]> for U16<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 4]> for F32<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 4]> for I32<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 4]> for U32<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 8]> for F64<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 8]> for I64<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 8]> for U64<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 16]> for I128<O>
where O: ByteOrder,

Source§

impl<O> AsRef<[u8; 16]> for U128<O>
where O: ByteOrder,

1.0.0 · Source§

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

1.13.0 · Source§

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

1.53.0 · Source§

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

1.0.0 · Source§

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

1.46.0 · Source§

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

1.0.0 · Source§

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

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

1.5.0 · Source§

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

Source§

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

1.5.0 · Source§

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

Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

Source§

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

1.0.0 · Source§

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

Source§

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

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

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

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

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

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

impl AsRef<FixedBytes<20>> for Address

impl AsRef<FixedBytes<24>> for Function

impl AsRef<FixedBytes<256>> for Bloom

impl AsRef<[u8; 20]> for Address

impl AsRef<[u8; 24]> for Function

impl AsRef<[u8; 256]> for Bloom

impl AsRef<[u8]> for Address

impl AsRef<[u8]> for Bloom

impl AsRef<[u8]> for Bytes

impl AsRef<[u8]> for Function

impl<T> AsRef<Log<T>> for Log<T>

impl<T> AsRef<T> for Sealed<T>

impl<const N: usize> AsRef<[u8; N]> for FixedBytes<N>

impl<const N: usize> AsRef<[u8]> for FixedBytes<N>

impl AsRef<str> for TypeStem<'_>

impl AsRef<str> for RootType<'_>

impl AsRef<str> for TupleSpecifier<'_>

impl AsRef<str> for TypeSpecifier<'_>

impl AsRef<str> for Revert

impl AsRef<FixedBytes<32>> for WordToken

impl AsRef<Uint<256, 4>> for Panic

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

impl AsRef<[u8]> for WordToken

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

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

impl<const N: usize> AsRef<[u64]> for BigInt<N>

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

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

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

impl AsRef<str> for BucketType

impl AsRef<str> for Event

impl AsRef<str> for JsonType

impl AsRef<str> for MfaDelete

impl AsRef<str> for Payer

impl AsRef<str> for Permission

impl AsRef<str> for Protocol

impl AsRef<str> for Tier

impl AsRef<str> for Type

impl AsRef<[u8]> for Blob

impl AsRef<str> for AppName

impl AsRef<str> for Region

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

impl<M, T, O> AsRef<bool> for BitRef<'_, M, T, O>
where M: Mutability, 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 BitBox<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<BitSlice<T, O>> for BitSlice<T, O>
where T: BitStore, O: BitOrder,

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

impl<T, O> AsRef<BitSlice<T, O>> for BitVec<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<BitVec<T, O>> for BitVec<T, O>
where T: BitStore, O: BitOrder,

impl AsRef<[u8]> for Hash

impl AsRef<BStr> for str

impl AsRef<BStr> for BStr

impl AsRef<BStr> for BString

impl AsRef<BStr> for [u8]

impl AsRef<[u8]> for BStr

impl AsRef<[u8]> for BString

impl AsRef<[u8]> for Bytes

impl AsRef<[u8]> for BytesMut

impl<S, T> AsRef<T> for StrInner<S>
where S: Storage, str: AsRef<T>,

impl AsRef<[u8; 32]> for Bytes32

impl AsRef<[u8; 48]> for Bytes48

impl AsRef<[u8]> for Blob

impl AsRef<str> for Utf8Component<'_>

impl AsRef<str> for Iter<'_>

impl AsRef<str> for Utf8Components<'_>

impl AsRef<str> for Utf8Path

impl AsRef<Utf8Path> for str

impl AsRef<Utf8Path> for Iter<'_>

impl AsRef<OsStr> for Utf8Component<'_>

impl AsRef<OsStr> for Iter<'_>

impl AsRef<OsStr> for Utf8Components<'_>

impl AsRef<OsStr> for Utf8Path

impl AsRef<Path> for Utf8Component<'_>

impl AsRef<Path> for Iter<'_>

impl AsRef<Path> for Utf8Components<'_>

impl AsRef<Path> for Utf8Path

impl AsRef<str> for Str

impl AsRef<str> for Id

impl AsRef<OsStr> for OsStr

impl AsRef<OsStr> for Str

impl AsRef<Path> for OsStr

impl AsRef<Path> for Str

impl AsRef<[u8]> for Str

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

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

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

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

impl<T> AsRef<T> for SpannedValue<T>

impl AsRef<str> for Ia5String

impl AsRef<[u8]> for BmpString

impl AsRef<[u8]> for Ia5String

impl AsRef<[u8]> for OctetString

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

impl AsRef<[u8]> for TeletexString

impl AsRef<[u8]> for Document

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<const MIN: i128, const MAX: i128> AsRef<i128> for RangedI128<MIN, MAX>

impl<const MIN: i16, const MAX: i16> AsRef<i16> for RangedI16<MIN, MAX>

impl<const MIN: i32, const MAX: i32> AsRef<i32> for RangedI32<MIN, MAX>

impl<const MIN: i64, const MAX: i64> AsRef<i64> for RangedI64<MIN, MAX>

impl<const MIN: i8, const MAX: i8> AsRef<i8> for RangedI8<MIN, MAX>

impl<const MIN: isize, const MAX: isize> AsRef<isize> for RangedIsize<MIN, MAX>

impl<const MIN: u128, const MAX: u128> AsRef<u128> for RangedU128<MIN, MAX>

impl<const MIN: u16, const MAX: u16> AsRef<u16> for RangedU16<MIN, MAX>

impl<const MIN: u32, const MAX: u32> AsRef<u32> for RangedU32<MIN, MAX>

impl<const MIN: u64, const MAX: u64> AsRef<u64> for RangedU64<MIN, MAX>

impl<const MIN: u8, const MAX: u8> AsRef<u8> for RangedU8<MIN, MAX>

impl<const MIN: usize, const MAX: usize> AsRef<usize> for RangedUsize<MIN, MAX>

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

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

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, Target> AsRef<Target> for Either<L, R>
where L: AsRef<Target>, R: AsRef<Target>,

impl<C> AsRef<<C as CurveArithmetic>::AffinePoint> for PublicKey<C>
where C: CurveArithmetic,

impl<C> AsRef<<C as CurveArithmetic>::Scalar> for BlindedScalar<C>
where C: CurveArithmetic,

impl<C> AsRef<<C as CurveArithmetic>::Scalar> for NonZeroScalar<C>
where C: CurveArithmetic,

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

impl<P> AsRef<P> for NonIdentity<P>

impl AsRef<[u8]> for Bloom

impl AsRef<[u64]> for U64

impl AsRef<[u8]> for H264

impl AsRef<[u8]> for H32

impl AsRef<[u8]> for H520

impl AsRef<[u8]> for H64

impl AsRef<str> for Chain

impl AsRef<str> for Opcode

impl AsRef<[u8]> for Bytes

impl AsRef<str> for CodeFormat

impl AsRef<str> for Jump

impl AsRef<str> for Source

impl AsRef<Path> for Solc

impl AsRef<[u8]> for BytecodeObject

impl AsRef<[u8]> for Source

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

impl AsRef<dyn Error> for Report

impl AsRef<Path> for RootPath

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl AsRef<[u8]> for Protocol

impl<F, const T: usize, const RATE: usize> AsRef<[[F; T]; T]> for MDSMatrix<F, T, RATE>

impl<F: ScalarField, const BYTES_PER_ELE: usize, const TOTAL_BITS: usize> AsRef<[AssignedValue<F>]> for SafeType<F, BYTES_PER_ELE, TOTAL_BITS>

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

impl<const T: usize> AsRef<[u8]> for Repr<T>

impl AsRef<[u8]> for Fq2Bytes

impl AsRef<[u8]> for G1Compressed

impl AsRef<[u8]> for G1Uncompressed

impl AsRef<[u8]> for G2Compressed

impl AsRef<[u8]> for G2Uncompressed

impl AsRef<[u8]> for G1Compressed

impl AsRef<[u8]> for G1Uncompressed

impl AsRef<[u8]> for ErisCompressed

impl AsRef<[u8]> for FpRepr

impl AsRef<[u8]> for FqRepr

impl AsRef<[u8]> for G1Compressed

impl AsRef<[u8]> for G1Uncompressed

impl AsRef<[u8]> for G2Compressed

impl AsRef<[u8]> for G2Uncompressed

impl AsRef<str> for HeaderName

impl AsRef<str> for Method

impl AsRef<str> for Authority

impl AsRef<str> for Scheme

impl AsRef<[u8]> for HeaderName

impl AsRef<[u8]> for HeaderValue

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

impl AsRef<[u8]> for Protocol

impl AsRef<[u8]> for ReasonPhrase

impl AsRef<[u8]> for InlineString

impl AsRef<Scalar> for Scalar

impl AsRef<[u8]> for Mmap

impl AsRef<[u8]> for MmapMut

impl AsRef<str> for Mime

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

impl AsRef<str> for Buffer

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

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

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

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

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

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

impl<T, const N: usize> AsRef<MemoryReadAuxCols<T>> for MemoryWriteAuxCols<T, N>

impl<const NUM_BITS: usize> AsRef<BitwiseOperationLookupChip<NUM_BITS>> for SharedBitwiseOperationLookupChip<NUM_BITS>

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

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

impl<F, W, const DIGEST_ELEMS: usize> AsRef<[W; DIGEST_ELEMS]> for Hash<F, W, DIGEST_ELEMS>

impl<const SIZE: usize> AsRef<str> for WriteBuffer<SIZE>

impl<const SIZE: usize> AsRef<[u8]> for WriteBuffer<SIZE>

impl AsRef<[u64]> for U128

impl AsRef<[u64]> for U256

impl AsRef<[u64]> for U512

impl AsRef<[u8]> for H128

impl AsRef<[u8]> for H160

impl AsRef<[u8]> for H256

impl AsRef<[u8]> for H384

impl AsRef<[u8]> for H512

impl AsRef<[u8]> for H768

impl AsRef<[u8]> for Literal

impl AsRef<[u8; 12]> for Nonce

impl AsRef<[u8]> for Tag

impl AsRef<[u8]> for PublicKey

impl AsRef<[u8]> for Digest

impl AsRef<[u8]> for Tag

impl AsRef<[u8]> for Document

impl AsRef<[u8]> for PublicKey

impl AsRef<[u8]> for Signature

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

impl<B> AsRef<[u8]> for UnparsedPublicKey<B>
where B: AsRef<[u8]>,

impl<B> AsRef<[u8]> for UnparsedPublicKey<B>
where B: AsRef<[u8]>,

impl AsRef<[u8]> for ProtocolName

impl AsRef<[u8]> for ResponderId

impl AsRef<[u8]> for Sct

impl AsRef<[u8]> for Certificate

impl AsRef<[u8]> for Certificate

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

impl AsRef<[u8; 32]> for Message

impl AsRef<[u8; 32]> for SecretKey

impl AsRef<[u8; 64]> for Signature

impl AsRef<[u8]> for SharedSecret

impl AsRef<[u8; 64]> for ElligatorSwift

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<T> AsRef<T> for Spanned<T>

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

impl AsRef<OsStr> for TempPath

impl AsRef<Path> for TempDir

impl AsRef<Path> for TempPath

impl<F> AsRef<Path> for NamedTempFile<F>

impl AsRef<TcpStream> for ReadHalf<'_>

impl AsRef<TcpStream> for WriteHalf<'_>

impl AsRef<UnixStream> for ReadHalf<'_>

impl AsRef<UnixStream> for WriteHalf<'_>

impl AsRef<str> for Field

impl AsRef<str> for Uncased<'_>

impl AsRef<str> for UncasedStr

impl AsRef<UncasedStr> for Uncased<'_>

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

impl AsRef<[u8]> for UncasedStr

impl AsRef<str> for Url

impl AsRef<Uuid> for Braced

impl AsRef<Uuid> for Simple

impl AsRef<Uuid> for Urn

impl AsRef<Uuid> for Uuid

impl AsRef<[u8]> for Uuid

impl AsRef<str> for IpAddr

impl AsRef<str> for DnsName

impl AsRef<str> for DnsNameRef<'_>

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

impl AsRef<BStr> for str

impl AsRef<BStr> for [u8]

impl AsRef<Bytes> for str

impl AsRef<Bytes> for [u8]

impl AsRef<[u8]> for BStr

impl AsRef<[u8]> for Bytes

impl<I> AsRef<I> for LocatingSlice<I>

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

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

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

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

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

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

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

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

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

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

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

impl<'a> AsRef<FlexZeroSlice> for FlexZeroVec<'a>

impl<'a, T: AsULE> AsRef<ZeroSlice<T>> for ZeroVec<'a, T>

impl<'a, T: AsULE> AsRef<[<T as AsULE>::ULE]> for ZeroVec<'a, T>

impl<T: AsULE> AsRef<ZeroSlice<T>> for &[T::ULE]

impl<T: AsULE> AsRef<ZeroSlice<T>> for Vec<T::ULE>

impl<T: ?Sized, F: VarZeroVecFormat> AsRef<VarZeroSlice<T, F>> for VarZeroSlice<T, F>