Crate tor_consdiff

Source
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§

DiffCommandIter 🔒
Iterator that wraps a line iterator and returns a sequence of Result<DiffCommand>.
DiffResult
The result of applying one or more diff commands to an input string.

Enums§

DiffCommand 🔒
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.
RangeEnd 🔒
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_trivialslow-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