mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-01 08:03:31 +01:00
rust: Add macro for impl ToString for {Unvalidated}ProtoEntry
.
This implements conversions from either a ProtoEntry or an UnvalidatedProtoEntry into a String, for use in replacing such functions as `protover::write_vote_to_string()`. * ADD macro for implementing ToString trait for ProtoEntry and UnvalidatedProtoEntry. * FIXES part of #24031: https://bugs.torproject.org/24031
This commit is contained in:
parent
b786b146ed
commit
26bafb3c33
@ -215,6 +215,27 @@ impl FromStr for ProtoEntry {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Generate an implementation of `ToString` for either a `ProtoEntry` or an
|
||||||
|
/// `UnvalidatedProtoEntry`.
|
||||||
|
macro_rules! impl_to_string_for_proto_entry {
|
||||||
|
($t:ty) => (
|
||||||
|
impl ToString for $t {
|
||||||
|
fn to_string(&self) -> String {
|
||||||
|
let mut parts: Vec<String> = Vec::new();
|
||||||
|
|
||||||
|
for (protocol, versions) in self.iter() {
|
||||||
|
parts.push(format!("{}={}", protocol.to_string(), versions.to_string()));
|
||||||
|
}
|
||||||
|
parts.sort_unstable();
|
||||||
|
parts.join(" ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
impl_to_string_for_proto_entry!(ProtoEntry);
|
||||||
|
impl_to_string_for_proto_entry!(UnvalidatedProtoEntry);
|
||||||
|
|
||||||
/// A `ProtoEntry`, but whose `Protocols` can be any `UnknownProtocol`, not just
|
/// A `ProtoEntry`, but whose `Protocols` can be any `UnknownProtocol`, not just
|
||||||
/// the supported ones enumerated in `Protocols`. The protocol versions are
|
/// the supported ones enumerated in `Protocols`. The protocol versions are
|
||||||
/// validated, however.
|
/// validated, however.
|
||||||
|
Loading…
Reference in New Issue
Block a user