aboutsummaryrefslogtreecommitdiffstats
path: root/src/target.rs
diff options
context:
space:
mode:
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(),
+ })
+ }
}