crop
ropey
crop | ropey | |
---|---|---|
3 | 4 | |
245 | 984 | |
6.5% | - | |
6.5 | 4.8 | |
about 1 month ago | about 1 month ago | |
Rust | Rust | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
crop
-
What's is a rusty way to implement sharable trees?
This is pretty much how copy-on-write ropes work. Check out xi-rope, Ropey or crop, they're all built using B-trees and implement the behavior you described.
-
Announcing crop, the fastest UTF-8 text rope for Rust
It already has that
ropey
-
Text Editor: Data Structures
> The worst way to store and manipulate text is to use an array.
Claim made from theoretical considerations, without any actual reference to real-world editors. The popular Micro[1] text editor uses a simple line array[2], and performs fantastically well on real-world editing tasks.
Meanwhile, ropes are so complicated that even high-quality implementations have extremely subtle bugs[3] that can lead to state or content corruption.
Which data structure is "best" is not just a function of its asymptotic performance. Practical considerations are equally important (arguably more so).
[1] https://github.com/zyedidia/micro
[2] https://github.com/zyedidia/micro/blob/master/internal/buffe...
[3] https://github.com/cessen/ropey/pull/67
-
What's is a rusty way to implement sharable trees?
This is pretty much how copy-on-write ropes work. Check out xi-rope, Ropey or crop, they're all built using B-trees and implement the behavior you described.
-
Is there any data type that's suitable for heavy string modifications? using String is super slow
This seems promising, though there doesn't seem to be replace function but there is an example: https://github.com/cessen/ropey/blob/d9c841b2ef4ae7ea97c13a99fc26b36ae14ebe12/examples/search_and_replace.rs
-
Text editing crate
xi is somewhat of an over-engineered mess (also according to the author themselves), I've found https://github.com/cessen/ropey to be an all round amazing alternative
What are some alternatives?
cloudplow - Automatic rclone remote uploader, with support for multiple remote/folder pairings. UnionFS Cleaner functionality: Deletion of UnionFS whiteout files and their corresponding files on rclone remotes. Automatic remote syncer: Sync between different remotes via a Scaleway server instance, that is created and destroyed at every sync.
Rope-Data-Structure-C - Implementation of a data structure that can store a string and efficiently cut a part (a substring) of this string and insert it in a different position
aria2-ariang-docker - 🐳 Aria2 downloader and AriaNg webui Docker image based on Alpine Linux
jumprope-rs
Cloudbox - Ansible-based solution for rapidly deploying a Docker containerized cloud media server.
SponsorBlock - Skip YouTube video sponsors (browser extension)
gluetun - VPN client in a thin Docker container for multiple VPN providers, written in Go, and using OpenVPN or Wireguard, DNS over TLS, with a few proxy servers built-in.
crdt-benchmarks - Real world text editing traces for benchmarking CRDT and Rope data structures [Moved to: https://github.com/josephg/editing-traces]
helix - A post-modern modal text editor.
rust-analyzer - A Rust compiler front-end for IDEs
automerge-perf - Performance tests for Automerge
xi-editor - A modern editor with a backend written in Rust.