aboutsummaryrefslogtreecommitdiffstats
path: root/src/target.rs
diff options
context:
space:
mode:
authorPhilipp A2019-03-31 19:48:39 +0200
committerPhilipp A2019-03-31 19:48:39 +0200
commit33f1186bfb5deb0db5ae29d26daf18dbe38fd21a (patch)
tree642197d9414ff170f5786ec61845a3f1c9e933f7 /src/target.rs
parent626cc2d747f198ba94bac241a872927968f50431 (diff)
downloadrust-rst-33f1186bfb5deb0db5ae29d26daf18dbe38fd21a.tar.bz2
Implement WIP HTML rendering
Diffstat (limited to 'src/target.rs')
-rw-r--r--src/target.rs42
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(),
+ })
+ }
}