[−][src]Struct smartstring::Compact
A compact string representation equal to String
in size with guaranteed inlining.
This representation relies on pointer alignment to be able to store a discriminant bit in its
inline form that will never be present in its String
form, thus
giving us 24 bytes on 64-bit architectures, and 12 bytes on 32-bit, minus one bit, to encode our
inline string. It uses the rest of the discriminant bit's byte to encode the string length, and
the remaining bytes (23 or 11 depending on arch) to store the string data. When the available space is exceeded,
it swaps itself out with a String
containing its previous
contents, relying on the discriminant bit in the String
's pointer to be unset, so we can
store the String
safely without taking up any extra space for a discriminant.
This performs generally as well as String
on all ops on boxed strings, and
better than String
s on inlined strings.
Trait Implementations
impl Debug for Compact
[src]
impl SmartStringMode for Compact
[src]
type BoxedString = String
The boxed string type for this layout.
type InlineArray = [u8; 11]
The inline string type for this layout.
const MAX_INLINE: usize
[src]
const DEALLOC: bool
[src]
Auto Trait Implementations
impl RefUnwindSafe for Compact
impl Send for Compact
impl Sync for Compact
impl Unpin for Compact
impl UnwindSafe for Compact
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,