Expand description
§tor-consdiff
Restricted ed diff and patch formats for Tor.
§Overview
This crate is part of Arti, a project to implement Tor in Rust. Tor uses a restricted version of the “ed-style” diff format to record the difference between a pair of consensus documents, so that clients can download only the changes since the last document they have.
This crate provides a function to apply one of these diffs to an older consensus document, to get a newer one.
TODO: Eventually, when we add relay support, we will need to generate these diffs as well as consume them.
License: MIT OR Apache-2.0
Modules§
- err 🔒
- Declare an error type for the tor-consdiff crate.
Structs§
- Diff
Command 🔒Iter - Iterator that wraps a line iterator and returns a sequence of
Result<DiffCommand>
. - Diff
Result - The result of applying one or more diff commands to an input string.
Enums§
- Diff
Command 🔒 - A command that can appear in a diff. Each command tells us to remove zero or more lines, and insert zero or more lines in their place.
- Error
- An error type from the tor-consdiff crate.
- Range
End 🔒 - A possible value for the end of a range. It can be either a line number, or a dollar sign indicating “end of file”.
Functions§
- apply_
diff - Apply a given diff to an input text, and return the result from applying that diff.
- apply_
diff_ trivial slow-diff-apply
- Apply a given diff to an input text, and return the result from applying that diff.
- looks_
like_ diff - Return true if
s
looks more like a consensus diff than some other kind of document. - parse_
diff_ 🔒header - Given a line iterator, check to make sure the first two lines are a valid diff header as specified in dir-spec.txt.
Type Aliases§
- Result 🔒
- Result type used by this crate