|
@@ -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.
|