Replace manual Default impls with educe in tor-guardmgr

This commit is contained in:
Ian Jackson 2022-03-02 17:48:10 +00:00
parent 738f7efa3d
commit daa44df221
3 changed files with 13 additions and 21 deletions

View File

@ -1,5 +1,7 @@
//! Implement GuardFilter and related types.
use educe::Educe;
use tor_linkspec::ChanTarget;
/// An object specifying which relays are eligible to be guards.
@ -15,11 +17,13 @@ use tor_linkspec::ChanTarget;
/// Right now, only the `Unrestricted` filter is implemented or available.
/// This enumeration is just a place-holder, however, to make sure we're
/// checking our filter in the right places.
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Educe)]
#[educe(Default)]
#[non_exhaustive]
pub enum GuardFilter {
/// A filter representing no restrictions on the permissible guards
/// at all.
#[educe(Default)]
Unfiltered,
/// Testing only: checks whether the first byte of the rsa key is 0 modulo 4.
@ -30,12 +34,6 @@ pub enum GuardFilter {
TestingLimitKeys,
}
impl Default for GuardFilter {
fn default() -> Self {
GuardFilter::Unfiltered
}
}
impl GuardFilter {
/// Create a new [`GuardFilter`] that doesn't restrict the set of
/// permissible guards at all.

View File

@ -4,6 +4,7 @@ use tor_linkspec::ChanTarget;
use tor_llcrypto::pk::{ed25519::Ed25519Identity, rsa::RsaIdentity};
use tor_netdir::{NetDir, Relay, RelayWeight};
use educe::Educe;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::net::SocketAddr;
@ -15,7 +16,8 @@ use crate::{GuardId, GuardParams, GuardRestriction, GuardUsage};
use tor_persist::{Futureproof, JsonValue};
/// Tri-state to represent whether a guard is believed to be reachable or not.
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
#[derive(Debug, Clone, Copy, Eq, PartialEq, Educe)]
#[educe(Default)]
#[allow(clippy::enum_variant_names)]
pub(crate) enum Reachable {
/// A guard is believed to be reachable, since we have successfully
@ -30,15 +32,10 @@ pub(crate) enum Reachable {
/// * We haven't tried to use the guard.
/// * Attempts to use it have failed, but those attempts are far
/// enough in the past that we're willing to retry them.
#[educe(Default)]
Unknown,
}
impl Default for Reachable {
fn default() -> Self {
Reachable::Unknown
}
}
/// The name and version of the crate that first picked a potential
/// guard.
///

View File

@ -130,6 +130,7 @@
// confirmed
// filtered
use educe::Educe;
use futures::channel::mpsc;
use futures::task::{SpawnError, SpawnExt};
use serde::{Deserialize, Serialize};
@ -959,12 +960,14 @@ impl tor_linkspec::ChanTarget for Guard {
/// The purpose for which we plan to use a guard.
///
/// This can affect the guard selection algorithm.
#[derive(Clone, Debug, Eq, PartialEq)]
#[derive(Clone, Debug, Eq, PartialEq, Educe)]
#[educe(Default)]
#[non_exhaustive]
pub enum GuardUsageKind {
/// We want to use this guard for a data circuit.
///
/// (This encompasses everything except the `OneHopDirectory` case.)
#[educe(Default)]
Data,
/// We want to use this guard for a one-hop, non-anonymous
/// directory request.
@ -974,12 +977,6 @@ pub enum GuardUsageKind {
OneHopDirectory,
}
impl Default for GuardUsageKind {
fn default() -> GuardUsageKind {
GuardUsageKind::Data
}
}
/// A set of parameters describing how a single guard should be selected.
///
/// Used as an argument to [`GuardMgr::select_guard`].