mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13: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
3c47d31e1f
commit
fa15ea104d
@ -226,6 +226,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
|
||||
/// the supported ones enumerated in `Protocols`. The protocol versions are
|
||||
/// validated, however.
|
||||
|
Loading…
Reference in New Issue
Block a user