summaryrefslogtreecommitdiff
path: root/vendored/mpd/src/version.rs
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.org>2022-08-07 20:47:54 -0400
committerJakob L. Kreuze <zerodaysfordays@sdf.org>2022-08-07 20:47:54 -0400
commitea77a8cf9c012fcd877d842fec85b0b5a442952c (patch)
tree7f209c030b97a957497f152d161a9d7035311132 /vendored/mpd/src/version.rs
parent0de7e9ac43f88aae3750ecfe25b5454fdd1ad015 (diff)
Import modifications to `mpd` crateHEADmaster
Diffstat (limited to 'vendored/mpd/src/version.rs')
-rw-r--r--vendored/mpd/src/version.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/vendored/mpd/src/version.rs b/vendored/mpd/src/version.rs
new file mode 100644
index 0000000..7a62d6a
--- /dev/null
+++ b/vendored/mpd/src/version.rs
@@ -0,0 +1,25 @@
+//! This module defines MPD version type and parsing code
+
+
+use crate::error::ParseError;
+use std::str::FromStr;
+
+// Version {{{
+/// MPD version
+#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, RustcEncodable)]
+pub struct Version(pub u16, pub u16, pub u16);
+
+impl FromStr for Version {
+ type Err = ParseError;
+ fn from_str(s: &str) -> Result<Version, ParseError> {
+ let mut splits = s.splitn(3, '.').map(FromStr::from_str);
+ match (splits.next(), splits.next(), splits.next()) {
+ (Some(Ok(a)), Some(Ok(b)), Some(Ok(c))) => Ok(Version(a, b, c)),
+ (Some(Err(e)), _, _) |
+ (_, Some(Err(e)), _) |
+ (_, _, Some(Err(e))) => Err(ParseError::BadInteger(e)),
+ _ => Err(ParseError::BadVersion),
+ }
+ }
+}
+// }}}