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
TimplementsAsRef<[u8]>and/orAsMut<[u8]>, the contents ofTas visible the byte slice returned byas_refandas_mutmay only be mutated through mutable references or owned access. In other words, no use of interior mutability. -
If
TimplementsAsRef<[u8]>, theas_refmethod must always return the same slice of bytes (unless the storage is mutated). -
If
TimplementsAsRef<[u8]>andAsMut<[u8]>, theas_mutmethod must return a mutable reference to the same slice of bytes as theas_refmethod returns. -
If
TimplementsAsRef<[u8]>andDefault, the default value must represent the empty byte sequence. In other words,T::default().as_ref().len() == 0. -
If
TimplementsAsRef<[u8]>andFrom<&[u8]>, it must do so in such a way that the byte slice returned byas_refis equal to the byte slice provided to thefrommethod.