aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-netdoc/src
Commit message (Collapse)AuthorAgeFilesLines
...
* tor-netdoc: Drop the allow(unused)Ian Jackson2025-12-101-1/+0
| | | | Now we use all the imports. We're still adding much code, though.
* tor-netdoc: recast Ignored and impl new encoding traitsIan Jackson2025-12-102-5/+52
| | | | | | | | | | | | This is a bit subtle. Ignored is used where we want to see and accept a value (for example, an Item or an Object), but we don't want to emit it. Update the docs and implement the various traits. We need an uninhabited helper type which implements ItemValueEncodable and ItemObjectEncodable but *not* ItemArgument. That prevents the use of Ignored for an argument, which would be wrong because what would we emit to keep the argument parser in step?
* tor-netdoc: encoding: impl new traits for NotPresentIan Jackson2025-12-101-0/+30
| | | | | | | Per the type-level docs for NotPresent: it's is a placeholder type mostly used when the document variety doesn't have this field. When encoding it, we emit nothing.
* tor-netdoc: encoding: Provide multiplicity moduleIan Jackson2025-12-103-1/+214
| | | | | | | | This is quite like the one for parse2, but separate for Reasons. Also add a bit of explanation to parse2's multiplicity.rs, about why there are all these different FooSetMethods traits, which the encoder doesn't need.
* tor-netdoc: encoding: Add new traits that we will deriveIan Jackson2025-12-101-0/+99
| | | | And implement them for Void and tuples, as applicable.
* tor-netdoc: Add imports to encode module, for new encode deriveIan Jackson2025-12-102-2/+20
| | | | | Adding these all at the beginning helped me with churn in this branch. The allow(unused) will go away again shortly.
* tor-netdoc: NetdocParseable: Document that BTreeSet is allowedIan Jackson2025-12-102-0/+5
| | | | | | | When we implemented this we documented it for ItemValueParseable but forgot to do so for NetdocParseable. Add some xrefs to the traits to try to stop similar mistakes.
* Remove unnecessary `doc(cfg(...))` attributesNeel Chauhan2025-12-041-2/+0
| | | | | | | | | Fixes part of #2193. (Edits from nickm: I selected the cases here that I could verify were correct from immediate context.) Edited-by: Nick Mathewson <[email protected]>
* tor-netdoc: Implement new authority certificatesClara Engler2025-12-043-1/+800
| | | | | | | | | This commit implements directory authority certificates using the `parse2` approaches. For now, those are in a module `doc::authcert::tmp`, with the eventual goal of moving it into its super module after removing/deprecating the legacy types.
* tor-netdoc: Implement (Partial)Eq for VerifyFailedClara Engler2025-12-041-1/+1
|
* Merge branch 'protover_refactor' into 'main'Nick Mathewson2025-12-0411-196/+51
|\ | | | | | | | | Make Protocols type inherently interned; add notes about usage. See merge request tpo/core/arti!3524
| * netdoc: Remove protocol interning.Nick Mathewson2025-12-037-69/+48
| | | | | | | | (It's now done in tor_protover.)
| * Move intern from tor-netdir to tor-basic-utils and make it pubNick Mathewson2025-12-036-130/+4
| |
| * tor_netdoc::intern: Note a future possible cleanup.Nick Mathewson2025-12-031-0/+2
| |
* | Merge branch 'n_authorities_usize' into 'main'Ian Jackson2025-12-042-5/+5
|\ \ | | | | | | | | | | | | tor-netdoc: Store n_authorities in usize See merge request tpo/core/arti!3522
| * | tor-netdoc: Remove unnecessary castsClara Engler2025-12-042-2/+2
| | |
| * | tor-netdoc: Store n_authorities in usizeClara Engler2025-12-022-3/+3
| | | | | | | | | | | | | | | | | | | | | Previously, this value was stored in a u16. However, because this number is usually always derived from some sort of list type, such as `Vec`, it makes more sense to use usize for this, as it avoid unnecessary casting and error checking.
* | | tor-netdoc: Provide ItemEncoder::finishIan Jackson2025-12-041-0/+5
| | | | | | | | | | | | | | | This provides a way to explicitly consume the encoder and finish the item, without use of mem::drop.
* | | tor-netdoc: Improve and expose args_raw_stringIan Jackson2025-12-041-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | The new derive is going to want this. So it would need to be at least `#[doc(hidden)]`. But it makes sense to expose it. But, it had a weird signature. Make its signature like that of `.arg_empty()`. (Note that an ItemEncoder contains just a `&mut NetdocEncoder`.)
* | | tor-netdoc: test2: Don't ever have raw String in defaulted argumentsIan Jackson2025-12-041-9/+9
| | | | | | | | | | | | | | | | | | | | | These cannot be encoded. So that is logically incoherent. (Perhaps String ought not to be NormalItemArgument, but let's not tackle that now.)
* | | tor-netdoc: Better error from empty argument (fmt)Ian Jackson2025-12-041-1/+4
| | |
* | | tor-netdoc: Better error from empty argumentIan Jackson2025-12-041-1/+1
| | | | | | | | | | | | | | | talking about the "keyword argument syntax" makes it sound a bit like its' the *keyword* that is wrong.
* | | tor-netdoc: Throw rather than squirreling error from NormalItemArgumentIan Jackson2025-12-041-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | NormalItemArgument is for types where we use the Display as the netdoc argument formatter. But what if gives the empty string? Previously we would allow `add_arg` to handle the error. That would record it in the NetdocEncoder. That's kind of OK, but it will prevent the caller from aborting early (and from elaborating the error).
* | | tor-netdoc: Explain some downsides to use of ItemEncoder::argIan Jackson2025-12-041-0/+3
| | |
* | | tor-netdoc: Suppress a clippy warning more thoroughlyIan Jackson2025-12-041-1/+2
| | |
* | | tor-netdoc: Suppress a clippy warningIan Jackson2025-12-031-0/+1
| |/ |/| | | | | | | | | | | This code sometimes expands to `let item = item;`. That's OK. In derive-deftly 1.5.x the two `item` wrongly had different hygiene span so the warning didn't trigger.
* | parse2: ItemValueParseable, netdoc(object, rest): docs: state signatureIan Jackson2025-12-021-1/+3
| | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3502/diffs?commit_id=f9a6d90ec6d5abf2958534d2c100c84f325e3634#2525aaf11b44162850101813478c4734160e11fa_920_919
* | parse2: ItemValueParseable, netdoc(object, rest): docs: clarify errorsIan Jackson2025-12-021-1/+1
| | | | | | | | | | | | The error is not really discarded (which would seem to mean ignoring it). The erorr *value* is discarded and is replaced with a less informative error value.
* | parse2: ItemValueParseable, netdoc(object, rest): docs: fix typoIan Jackson2025-12-021-1/+1
| |
* | parse2: ItemValueParseable, netdoc(rest, with): reworkIan Jackson2025-12-022-7/+10
| | | | | | | | | | | | | | | | | | | | The path in `with` must always be a module, not a function, because we need to use it for encoding too. In the case of `rest`, it's probably sensible to require a different function name, given that the semantics are subtly different to those of `rest` without `with`, since the latter can only get a single word but with `rest` you get the whole line.
* | parse2: ItemValueParseable, netdoc(rest): docs: clarify behaviourIan Jackson2025-12-021-1/+1
|/
* netdoc: Add missing docs for encode_pow_params()Gabriela Moldovan2025-12-011-0/+1
|
* netdoc: allow unstable_name_collisions lint for exactly_one()Gabriela Moldovan2025-12-011-0/+5
| | | | This silences a new warning on nightly.
* parse2: Move naming convention to pocClara Engler2025-11-272-15/+15
| | | | | | | | | | | This commit moves the "Naming Convention" of the parse2::poc module into the respective module, as it does not apply to parse2 itself, as outlined in arti!3462. With this commit, there remains `NdaSystemTimeDeprecatedSyntax` as the only type outside poc following this naming schema. However, because it is more or less already deprecated anyways, there is no real need to bother with it any further.
* tor-netdoc: Rename ItemArgument method to write_arg_ontoIan Jackson2025-11-262-12/+12
| | | | | | | tor_bytes also has a write_onto method. And types (especially utility types like `Ignored`) might conceivably implement both! No need for semver update since this was pub(crate) in the previous release.
* tor-netdoc: Minor wording fix in a docIan Jackson2025-11-261-1/+1
| | | | | This is in the ItemValueParseable derive, so the individual fields are Arguments, not Items.
* tor-netdoc: Minor grammar fix in a docIan Jackson2025-11-261-1/+1
|
* Merge branch 'relay-flags-options-trait' into 'main'Ian Jackson2025-11-253-55/+55
|\ | | | | | | | | tor-netdoc: Parameterise RelayFlagsParser by an options trait instead See merge request tpo/core/arti!3489
| * tor-netdoc: relay_flags: Tidy up the formatting (rustfmt)Ian Jackson2025-11-241-9/+3
| |
| * tor-netdoc: Rename RelayFlagsParser to relay_flags::ParserIan Jackson2025-11-243-9/+9
| | | | | | | | | | | | | | Since we expose the relay_flags module, it makes sense to give this a shorter name. (It had a longer name when it was part of the netstatus module.)
| * tor-netdoc: relay_flags: Remove two now-not-needed type aliasesIan Jackson2025-11-243-13/+5
| | | | | | | | The generic parser type is easy enough to name now.
| * tor-netdoc: Parameterise RelayFlagsParser by an options trait insteadIan Jackson2025-11-241-41/+55
| | | | | | | | | | | | | | This avoids a lot of messing about with const generics. Suggested by the author of enumset: https://github.com/Lymia/enumset/issues/74#issuecomment-3561337369
* | Merge branch 'nd-test' into 'main'Ian Jackson2025-11-253-17/+23
|\ \ | | | | | | | | | | | | tor-netdoc: Move parse2/test.rs to test2.rs See merge request tpo/core/arti!3486
| * | tor-netdoc: test2: Run rustfmtIan Jackson2025-11-241-10/+2
| | | | | | | | | | | | Tidy up the imports.
| * | tor-netdoc: test2: Adjust type aliasesIan Jackson2025-11-241-14/+12
| | | | | | | | | | | | | | | | | | Now that this module is not inside parse2 its identifier namespace oughtn't to be parse-specific. Rename things so that every imports/aliases related to parsing implies parsing in its name.
| * | tor-netdoc: Move parse2/test.rs to test2.rsIan Jackson2025-11-243-7/+23
| | | | | | | | | | | | | | | | | | | | | We're going to use this for the encoder testing too, so it needs to be not buried inside parse2. This commit is the file rename plus minimal changes to make it compile.
* | | Merge branch 'p2-mult' into 'main'Ian Jackson2025-11-254-70/+55
|\ \ \ | |_|/ |/| | | | | | | | tor-netdoc: parse2: Combine MultiplicitySelector See merge request tpo/core/arti!3478
| * | tor-netdoc: Add a comment explaining why P2MultiplicitySelectorIan Jackson2025-11-241-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | as per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3478#note_3291482 encode::MultiplicitySelector doesn't actually exist yet in this branch, but it will do. Don't mention that fact as we'll probably just forget to update this comment...
| * | tor-netdoc: rustfmt to tidy up importsIan Jackson2025-11-192-5/+2
| | |
| * | tor-netdoc: avoid importing MultiplicitySelector outside parse2Ian Jackson2025-11-191-4/+4
| | | | | | | | | | | | | | | | | | The encoder is going to need to have a different MultiplicitySelector (just because of different variance, really) so we mustn't import it under this name.