A rope is an efficient data structure for large mutable strings. It's essentially a binary tree whose leaves are strings.
For more information, see the following resources: + http://scienceblogs.com/goodmath/2009/01/26/ropes-twining-together-strings/ + https://www.ibm.com/developerworks/library/j-ropes/ + http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9450&rep=rep1&type=pdf
Our Rope
implementation aims to eventually function as a superset of
Rust's String
,
providing the same API plus additional methods. Therefore, code which uses
String
can easily be ported to use Rope
.
Rope
provides two APIs for editing a Rope
: a destructive,
edit-in-place API whose methods match those of String
, and a
non-destructive, persistant API.