Struct bytes::str::Rope
[−]
[src]
pub struct Rope { // some fields omitted }
An immutable sequence of bytes formed by concatenation of other ByteStr
values, without copying the data in the pieces. The concatenation is
represented as a tree whose leaf nodes are each a Bytes
value.
Most of the operation here is inspired by the now-famous paper Ropes: an Alternative to Strings. hans-j. boehm, russ atkinson and michael plass.
Fundamentally the Rope algorithm represents the collection of pieces as a binary tree. BAP95 uses a Fibonacci bound relating depth to a minimum sequence length, sequences that are too short relative to their depth cause a tree rebalance. More precisely, a tree of depth d is "balanced" in the terminology of BAP95 if its length is at least F(d+2), where F(n) is the n-the Fibonacci number. Thus for depths 0, 1, 2, 3, 4, 5,... we have minimum lengths 1, 2, 3, 5, 8, 13,...
Methods
impl Rope
fn from_slice(bytes: &[u8]) -> Rope
fn of<B: ByteStr + 'static>(bytes: B) -> Rope
Returns a Rope consisting of the supplied Bytes as a single segment.