1#[derive(Debug, PartialEq)]
6pub enum Capability {
7 MultiPrefix,
9 Sasl,
11 AccountNotify,
13 AwayNotify,
15 ExtendedJoin,
17 Metadata,
19 MetadataNotify,
21 Monitor,
23 AccountTag,
25 Batch,
27 CapNotify,
29 ChgHost,
31 EchoMessage,
33 InviteNotify,
35 ServerTime,
37 UserhostInNames,
39 Custom(&'static str),
41}
42
43pub enum NegotiationVersion {
45 V301,
47 V302,
49}
50
51impl AsRef<str> for Capability {
52 fn as_ref(&self) -> &str {
53 match *self {
54 Capability::MultiPrefix => "multi-prefix",
55 Capability::Sasl => "sasl",
56 Capability::AccountNotify => "account-notify",
57 Capability::AwayNotify => "away-notify",
58 Capability::ExtendedJoin => "extended-join",
59 Capability::Metadata => "metadata",
60 Capability::MetadataNotify => "metadata-notify",
61 Capability::Monitor => "monitor",
62 Capability::AccountTag => "account-tag",
63 Capability::Batch => "batch",
64 Capability::CapNotify => "cap-notify",
65 Capability::ChgHost => "chghost",
66 Capability::EchoMessage => "echo-message",
67 Capability::InviteNotify => "invite-notify",
68 Capability::ServerTime => "server-time",
69 Capability::UserhostInNames => "userhost-in-names",
70 Capability::Custom(s) => s,
71 }
72 }
73}
74
75#[cfg(test)]
76mod test {
77 use super::Capability::*;
78
79 #[test]
80 fn to_str() {
81 assert_eq!(MultiPrefix.as_ref(), "multi-prefix");
82 assert_eq!(Sasl.as_ref(), "sasl");
83 assert_eq!(AccountNotify.as_ref(), "account-notify");
84 assert_eq!(AwayNotify.as_ref(), "away-notify");
85 assert_eq!(ExtendedJoin.as_ref(), "extended-join");
86 assert_eq!(Metadata.as_ref(), "metadata");
87 assert_eq!(MetadataNotify.as_ref(), "metadata-notify");
88 assert_eq!(Monitor.as_ref(), "monitor");
89 assert_eq!(AccountTag.as_ref(), "account-tag");
90 assert_eq!(Batch.as_ref(), "batch");
91 assert_eq!(CapNotify.as_ref(), "cap-notify");
92 assert_eq!(ChgHost.as_ref(), "chghost");
93 assert_eq!(EchoMessage.as_ref(), "echo-message");
94 assert_eq!(InviteNotify.as_ref(), "invite-notify");
95 assert_eq!(ServerTime.as_ref(), "server-time");
96 assert_eq!(UserhostInNames.as_ref(), "userhost-in-names");
97 assert_eq!(Custom("example").as_ref(), "example");
98 }
99}