diff options
| author | Philipp A | 2019-03-31 19:48:39 +0200 |
|---|---|---|
| committer | Philipp A | 2019-03-31 19:48:39 +0200 |
| commit | 33f1186bfb5deb0db5ae29d26daf18dbe38fd21a (patch) | |
| tree | 642197d9414ff170f5786ec61845a3f1c9e933f7 /src/target.rs | |
| parent | 626cc2d747f198ba94bac241a872927968f50431 (diff) | |
| download | rust-rst-33f1186bfb5deb0db5ae29d26daf18dbe38fd21a.tar.bz2 | |
Implement WIP HTML rendering
Diffstat (limited to 'src/target.rs')
| -rw-r--r-- | src/target.rs | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/src/target.rs b/src/target.rs index 81ff925..d36a2f5 100644 --- a/src/target.rs +++ b/src/target.rs @@ -1,4 +1,5 @@ use std::path::PathBuf; +use std::fmt; use std::str::FromStr; use std::string::ParseError; @@ -9,32 +10,43 @@ use serde_derive::Serialize; #[derive(Debug,PartialEq,Serialize)] #[serde(untagged)] pub enum Target { - #[serde(serialize_with = "serialize_url")] - Url(Url), - Path(PathBuf), + #[serde(serialize_with = "serialize_url")] + Url(Url), + Path(PathBuf), } impl From<Url> for Target { - fn from(url: Url) -> Self { - Target::Url(url) - } + fn from(url: Url) -> Self { + Target::Url(url) + } } impl From<PathBuf> for Target { - fn from(path: PathBuf) -> Self { - Target::Path(path) - } + fn from(path: PathBuf) -> Self { + Target::Path(path) + } +} + + +impl fmt::Display for Target { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use Target::*; + match *self { + Url (ref url) => write!(f, "{}", url), + Path(ref path) => write!(f, "{}", path.display()), + } + } } impl FromStr for Target { - type Err = ParseError; + type Err = ParseError; fn from_str(input: &str) -> Result<Self, Self::Err> { - Ok(match Url::parse(input) { - Ok(url) => url.into(), - Err(_) => PathBuf::from(input.trim()).into(), - }) - } + Ok(match Url::parse(input) { + Ok(url) => url.into(), + Err(_) => PathBuf::from(input.trim()).into(), + }) + } } |
