summaryrefslogtreecommitdiff
path: root/crates/tor-basic-utils
Commit message (Collapse)AuthorAgeFilesLines
...
* Replace all README copies in src/lib.rs with includesIan Jackson2022-10-121-10/+1
| | | | | | | | The feature we want is `#[doc = include_str!("README.md")]`, which is stable since 1.54 and our MSRV is now 1.56. This commit is precisely the result of the following Perl rune: perl -i~ -0777 -pe 's{(^//!(?!.*\@\@).*\n)+}{#![doc = include_str!("../README.md")]\n}m' crates/*/src/lib.rs
* Allow "clippy::single_char_pattern" in tests.Ian Jackson2022-10-122-0/+2
| | | | | | | This lint exists for perf reasons, and this is rarely relevant in tests. Using double quoted str is generally cognitively less burdensome.
* n_key_set: Fix bugs in API documentation.Nick Mathewson2022-10-041-6/+6
| | | | | For whatever reason, rustdoc didn't like these multiline strings in `doc` attributes.
* n_key_set: Wrap "where" clauses in square brackets too.Nick Mathewson2022-10-041-7/+7
| | | | Otherwise, there is a parsing ambiguity. :(
* n_key_set: Rename generic parameters on functions.Nick Mathewson2022-10-041-11/+11
| | | | | Previously we used `<T>` in a bunch of places. But that fails if you try to declare `T` as a parameter on the structure itself.
* n_key_set: Add a try_insert().Nick Mathewson2022-10-041-8/+30
| | | | I am finding as I use this that I want a variant that can't panic.
* Merge branch 'multi_keyed_set' into 'main'Nick Mathewson2022-10-033-0/+572
|\ | | | | | | | | Include a HashSet variant that can be keyed on multiple keys. See merge request tpo/core/arti!747
| * n_key_set: fix doctest compilation.Nick Mathewson2022-10-031-2/+2
| |
| * n_key_set: Update generic syntaxNick Mathewson2022-10-031-12/+14
| | | | | | | | Doing this lets us work with defaults and const generics.
| * n_key_set: rename map elements.Nick Mathewson2022-10-031-9/+9
| | | | | | | | This prevents an explosion if somebody has a key called "values".
| * n_key_set: Add support for generic lifetimes.Nick Mathewson2022-10-031-6/+48
| | | | | | | | | | It doesn't work for const generics yet, since they can't be repeated in quite the same way.
| * Tweaks and improvements in documentation.Nick Mathewson2022-10-031-7/+16
| | | | | | | | Most of these were suggested by Ian
| * Require slab 0.4.4Nick Mathewson2022-10-031-1/+1
| | | | | | | | The `try_remove()` method, which we need, was introduced there.
| * Repair rustdoc.Nick Mathewson2022-10-031-20/+16
| | | | | | | | | | The previous indentation was making it think that we had rust code where none existed.
| * n_key_set: Add a function to check invariant violationsNick Mathewson2022-10-031-1/+53
| | | | | | | | Also, document another invariant.
| * n_key_set: Use remove_by_foo to implement insert.Nick Mathewson2022-10-031-4/+4
| |
| * n_key_set: Panic on more invariant and constraint violations.Nick Mathewson2022-10-031-3/+10
| |
| * n_key_set: Remove by_$key_mut.Nick Mathewson2022-10-031-20/+0
| | | | | | | | This can't be used in a consistency-preserving way.
| * n_key_set: Add flags to keys rather than inferring from Option<T>Nick Mathewson2022-10-031-17/+18
| | | | | | | | | | | | | | | | Using Option<T> as an alias for T was too clever indeed, and it meant that our HashMaps were declared with the wrong types. Putting flags here instead gives us an extension point that we can use in the future.
| * n_key_set: Use to_owned to permit &str accessors.Nick Mathewson2022-10-031-3/+2
| |
| * n_key_set: Add some tests, and notes on infelicities.Nick Mathewson2022-10-031-4/+106
| |
| * n_key_set: Fix a bug in function access.Nick Mathewson2022-10-031-1/+1
| |
| * n_key_set: add FromIterator.Nick Mathewson2022-10-031-0/+16
| |
| * Include a HashSet variant that can be keyed on multiple keys.Nick Mathewson2022-10-033-0/+366
| | | | | | | | | | | | | | | | | | | | | | Every element in the set has up to N keys, each of which may have differnt types. No value for any key may correspond to more than one element in the set. These properties can be provided, via a macro, for values of N between 1 and $BIG_ENOUGH. We'll use this to implement a type that holds HasRelayIds.
* | Bump crates that have had no API changes.Nick Mathewson2022-10-031-1/+1
|/
* fix clippy::needless_borrowtrinity-1686a2022-09-101-1/+1
|
* Remove semver.md from arti-1.0.0Nick Mathewson2022-09-071-1/+0
|
* Bump crate versions in preparation for Arti 1.0.0 release.Nick Mathewson2022-09-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because we want to work more on ensuring that our semver stability story is solid, we are _not_ bumping arti-client to 1.0.0 right now. Here are the bumps we _are_ doing. Crates with "minor" bumps have had API breaks; crates with "patch" bumps have had new APIs added. Note that `tor-congestion` is not bumped here: it's a new crate, and hasn't been published before. ``` tor-basic-utils minor fs-mistrust minor tor-config minor tor-rtcompat minor tor-rtmock minor tor-llcrypto patch tor-bytes patch tor-linkspec minor tor-cell minor tor-proto minor tor-netdoc patch tor-netdir minor tor-persist patch tor-chanmgr minor tor-guardmgr minor tor-circmgr minor tor-dirmgr minor arti-client minor arti-hyper minor arti major arti-bench minor arti-testing minor ```
* tor-basic-utils: Provide IoErrorExt is_not_a_directory()Ian Jackson2022-08-253-0/+31
| | | | | We're going to want this functionality, which isn't in the stable stdlib.
* enable doc_auto_cfg feature on every crate when documenting for docs.rstrinity-1686a2022-08-242-0/+4
|
* Bump patch versions on crates that have new APIs.Nick Mathewson2022-08-011-1/+1
| | | | | | | | | | | | | | Do _not_ bump the dependency versions on crates that have had no changes since arti 0.0.5, since those crates do not depend on the new APIs. ``` cargo set-version -p tor-basic-utils --bump patch cargo set-version -p tor-llcrypto --bump patch git restore crates/tor-checkable git restore crates/tor-consdiff git restore crates/tor-rtmock ```
* tor-basic-utils: Add a test for DropNotifyWatchSenderIan Jackson2022-07-191-0/+17
|
* tor-basic-utils: Add ref to upstream issue re dropIan Jackson2022-07-191-0/+3
|
* tor-basic-utils: Add comment about lack of raceIan Jackson2022-07-191-0/+4
| | | | | | | In answer to https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/632#note_2822107 I think this is subtle enough that it deserves a comment.
* arti-client: Provide DropNotifyWatchSenderIan Jackson2022-07-181-0/+41
| | | | | | | | | | | | There are going to be some tasks (well, right away, one task) which will want to go away when the sender is dropped. The docs in postage are silent, but postage::watch::Sender does not have a Drop impl so I don't think we can rely on the Receivers getting None from their Stream impl. So we're going to have the watch send Options, which are None only when the sender is dropped.
* Provide maybe_send on postage::watch::Sender, via extension traitIan Jackson2022-07-182-0/+89
| | | | | | | | | | | | We need to replace the AtomicBool for dormant mode with something that can wake up tasks. postage::watch is the right shape. But we want to be able to update it but suppress no-op updates. (There is going to be a call site where no-op updates can occur.) In the absence of a suitable upstream method as requested here https://github.com/austinjones/postage-rs/issues/56 we introduce this facility via an extension trait.
* Merge branch 'cirmgr_error_cleanup' into 'main'Ian Jackson2022-07-151-0/+44
|\ | | | | | | | | Clean-ups in circmgr errors See merge request tpo/core/arti!625
| * tor-basic-utils: Add a new interface to FilterCountNick Mathewson2022-07-121-0/+44
| | | | | | | | | | | | | | | | This interface allows using FilterCount with functions that expect predicates rather than iterator chains. I'm about to use it to get meaningful FilterCount results in the path-selection code in circmgr.
* | Fix two rustdoc linksIan Jackson2022-07-121-2/+2
|/ | | | This type must have been renamed, I guess.
* Add a semver note to FilterCountNick Mathewson2022-07-081-1/+6
|
* FilterCount: Add a simple Display helper.Nick Mathewson2022-07-061-0/+34
| | | | | | This is a helper rather than a Display implementation because it isn't the only logical way to display these values. (In fact, without context, it isn't even the _most_ logical way)
* New "counting filter" iterator helper in tor-basic-utils.Nick Mathewson2022-07-062-0/+116
| | | | | | | This is going to make it simpler to write the code in guardmgr (and later in circmgr) that keeps track of how many relays were rejected for what reason. The latter, in turn, should improve error messages when we're unable to pick a guard or a path.
* Bump crate and dependency versions.Nick Mathewson2022-06-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These were done with the following commands: ``` cargo set-version -p tor-basic-utils --bump patch cargo set-version -p fs-mistrust --bump minor cargo set-version -p tor-error --bump patch cargo set-version -p tor-config --bump patch cargo set-version -p tor-units --bump patch cargo set-version -p tor-rtcompat --bump minor cargo set-version -p tor-llcrypto --bump patch cargo set-version -p tor-bytes --bump minor cargo set-version -p tor-socksproto --bump minor cargo set-version -p tor-cert --bump minor cargo set-version -p tor-cell --bump minor cargo set-version -p tor-proto --bump minor cargo set-version -p tor-netdoc --bump patch cargo set-version -p tor-netdir --bump minor cargo set-version -p tor-persist --bump patch cargo set-version -p tor-chanmgr --bump minor cargo set-version -p tor-guardmgr --bump minor cargo set-version -p tor-circmgr --bump patch cargo set-version -p tor-dirclient --bump patch cargo set-version -p tor-dirmgr --bump minor cargo set-version -p arti-client --bump patch cargo set-version -p arti --bump minor cargo set-version -p arti-bench --bump minor cargo set-version -p arti-testing --bump minor ```
* clippy: Consolidate many lints in maint/add_warningIan Jackson2022-06-241-2/+9
| | | | | | Found these by disabling the nightly dbg macro special case. Now, we have a mechanism for globally adding suppressions to tests, we can use that instead.
* Run maint/add_warning crates/*/src/{lib,main}.rsIan Jackson2022-06-231-0/+3
| | | | Update all lint blocks
* Fix a rustdoc link.Nick Mathewson2022-06-071-1/+1
|
* Merge branch 'use-testing-rng'Nick Mathewson2022-06-071-1/+2
|\
| * Use testing_rng() in tests throughout our crates.Nick Mathewson2022-06-021-1/+2
| | | | | | | | | | | | This only affects uses of thread_rng(), and affects them all more or less indiscriminately. One test does not work with ARTI_TEST_PRNG=deterministic; the next commit will fix it.
* | Merge branch 'testing-rng' into 'main'Nick Mathewson2022-06-023-0/+341
|\| | | | | | | | | New facility for deterministic and reproducible test PRNGs. See merge request tpo/core/arti!561
| * New facility for deterministic and reproducible test PRNGs.Nick Mathewson2022-06-023-0/+341
| | | | | | | | | | | | | | | | | | | | | | The new `testing_rng()` function is meant as a replacement for thread_rng() for use in unit tests. By default, it uses a randomly seeded RNG, but prints the seed before the test so that you can reproduce any failures that occur. You can override this via the environment to use a previous seed, or by using a deterministic seed for all your tests. Backend for #486.