pub struct OwnedText { /* private fields */ }Expand description
An owned UTF-8 payload and the number of Unicode scalars in it, computed on first demand (ADR-115).
The fields are private and OwnedText::new is the only constructor,
because a count that does not describe these bytes is not a slow Text, it
is a wrong one: t.len() would answer someone else’s length and t[i]
would index bytes in a text that has multi-byte scalars. The only writer is
OwnedText::char_count, which writes what it just counted from
self.bytes, and Text is immutable (ADR-085 allocates a fresh payload for
+), so there is no path that could invalidate one.
This costs zero bytes. Box<str> is 16 and SourceSlice is 24, so
the #[repr(C)] enum’s union already reserved 8 bytes the owned variant
never used. The const _ below is what holds that claim true.