Trait string::StableAsRef[][src]

pub unsafe trait StableAsRef { }
Expand description

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

Implementors