[][src]Trait string::StableAsRef

pub unsafe trait StableAsRef { }

Marker trait that indicates that a type is guaranteed safe to use as backing storage for String.

In order to be safe, a storage type T needs to guarantee the following:

  • If T implements AsRef<[u8]> and/or AsMut<[u8]>, the contents of T as visible the byte slice returned by as_ref and as_mut may only be mutated through mutable references or owned access. In other words, no use of interior mutability.

  • If T implements AsRef<[u8]>, the as_ref method must always return the same slice of bytes (unless the storage is mutated).

  • If T implements AsRef<[u8]> and AsMut<[u8]>, the as_mut method must return a mutable reference to the same slice of bytes as the as_ref method returns.

  • If T implements AsRef<[u8]> and Default, the default value must represent the empty byte sequence. In other words, T::default().as_ref().len() == 0.

  • If T implements AsRef<[u8]> and From<&[u8]>, it must do so in such a way that the byte slice returned by as_ref is equal to the byte slice provided to the from method.

Implementations on Foreign Types

impl<'a, T> StableAsRef for &'a T where
    T: StableAsRef
[src]

impl<'a, T> StableAsRef for &'a mut T where
    T: StableAsRef
[src]

impl<T> StableAsRef for Box<T> where
    T: StableAsRef
[src]

impl<T> StableAsRef for Rc<T> where
    T: StableAsRef
[src]

impl<T> StableAsRef for Arc<T> where
    T: StableAsRef
[src]

impl StableAsRef for String[src]

impl StableAsRef for str[src]

impl StableAsRef for Vec<u8>[src]

impl StableAsRef for [u8][src]

impl StableAsRef for Bytes[src]

impl StableAsRef for BytesMut[src]

impl StableAsRef for [u8; 0][src]

impl StableAsRef for [u8; 1][src]

impl StableAsRef for [u8; 2][src]

impl StableAsRef for [u8; 3][src]

impl StableAsRef for [u8; 4][src]

impl StableAsRef for [u8; 5][src]

impl StableAsRef for [u8; 6][src]

impl StableAsRef for [u8; 7][src]

impl StableAsRef for [u8; 8][src]

impl StableAsRef for [u8; 9][src]

impl StableAsRef for [u8; 10][src]

impl StableAsRef for [u8; 11][src]

impl StableAsRef for [u8; 12][src]

impl StableAsRef for [u8; 13][src]

impl StableAsRef for [u8; 14][src]

impl StableAsRef for [u8; 15][src]

impl StableAsRef for [u8; 16][src]

Loading content...

Implementors

Loading content...