Struct ropey::RopeBuilder [] [src]

pub struct RopeBuilder<S = DefaultSegmenter> where
    S: GraphemeSegmenter
{ /* fields omitted */ }

An efficient incremental Rope builder.

This is used to efficiently build ropes from sequences of text chunks. It is useful for creating ropes from:

  • ...large text files, without pre-loading their entire contents into memory (but see Rope::from_reader() which uses this internally for precisely that use-case).
  • ...streaming data sources.
  • ...non-utf8 text data, doing the encoding conversion incrementally as you go.

Unlike repeatedly calling Rope::insert() on the end of a rope, this API runs in time linear to the amount of data fed to it, and is overall much faster.

The converse of this API is the Chunks iterator, which is useful for efficiently streaming a rope's text data out.

Example

let mut builder = RopeBuilder::new();

builder.append("Hello ");
builder.append("world!\n");
builder.append("How's ");
builder.append("it goin");
builder.append("g?");

let rope = builder.finish();

assert_eq!(rope, "Hello world!\nHow's it going?");

Methods

impl RopeBuilder<DefaultSegmenter>
[src]

[src]

Creates a new RopeBuilder, ready for input.

impl<S: GraphemeSegmenter> RopeBuilder<S>
[src]

[src]

Creates a new RopeBuilder with a custom grapheme segmenter.

Example

use ropey::segmentation::NullSegmenter;

let mut builder = RopeBuilder::<NullSegmenter>::with_segmenter();

[src]

Appends chunk to the end of the in-progress Rope.

This method is called repeatedly to incrementally build up a Rope. The passed text chunk can be as large or small as desired, but larger chunks are more efficient.

chunk must be valid utf8 text.

[src]

Finishes the build, and returns the Rope.

Note: this method consumes the builder. If you want to continue building other ropes with the same prefix, you can clone the builder before calling finish().

Trait Implementations

impl<S: Debug> Debug for RopeBuilder<S> where
    S: GraphemeSegmenter
[src]

[src]

Formats the value using the given formatter.

impl<S: Clone> Clone for RopeBuilder<S> where
    S: GraphemeSegmenter
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more