From ea77a8cf9c012fcd877d842fec85b0b5a442952c Mon Sep 17 00:00:00 2001 From: "Jakob L. Kreuze" Date: Sun, 7 Aug 2022 20:47:54 -0400 Subject: Import modifications to `mpd` crate --- vendored/mpd/src/version.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 vendored/mpd/src/version.rs (limited to 'vendored/mpd/src/version.rs') 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 { + 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), + } + } +} +// }}} -- cgit v1.3