about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2018-03-08 11:25:54 -0800
committerGitHub <noreply@github.com>2018-03-08 11:25:54 -0800
commitf12d5aa517a9157bf96e630a87db7be516c86d52 (patch)
tree84c35c78a4a7393c29cda6f4e9291aec8559437b /src/libstd
parentc90f68224b069f5bb2a80e30e2737e4bb17c1466 (diff)
parent05a9acc3b844ff284a3e3d85dde2d9798abfb215 (diff)
downloadrust-f12d5aa517a9157bf96e630a87db7be516c86d52.tar.gz
rust-f12d5aa517a9157bf96e630a87db7be516c86d52.zip
Rollup merge of #48292 - topecongiro:from_str-for-path-and-pathbuf, r=alexcrichton
Implement FromStr for PathBuf

Closes #44431.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/path.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libstd/path.rs b/src/libstd/path.rs
index cd2af99d6ac..ec961575473 100644
--- a/src/libstd/path.rs
+++ b/src/libstd/path.rs
@@ -87,6 +87,7 @@ use io;
 use iter::{self, FusedIterator};
 use ops::{self, Deref};
 use rc::Rc;
+use str::FromStr;
 use sync::Arc;
 
 use ffi::{OsStr, OsString};
@@ -1441,6 +1442,32 @@ impl From<String> for PathBuf {
     }
 }
 
+/// Error returned from [`PathBuf::from_str`][`from_str`].
+///
+/// Note that parsing a path will never fail. This error is just a placeholder
+/// for implementing `FromStr` for `PathBuf`.
+///
+/// [`from_str`]: struct.PathBuf.html#method.from_str
+#[derive(Debug, Clone, PartialEq, Eq)]
+#[stable(feature = "path_from_str", since = "1.26.0")]
+pub enum ParsePathError {}
+
+#[stable(feature = "path_from_str", since = "1.26.0")]
+impl fmt::Display for ParsePathError {
+    fn fmt(&self, _: &mut fmt::Formatter) -> fmt::Result {
+        match *self {}
+    }
+}
+
+#[stable(feature = "path_from_str", since = "1.26.0")]
+impl FromStr for PathBuf {
+    type Err = ParsePathError;
+
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Ok(PathBuf::from(s))
+    }
+}
+
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<P: AsRef<Path>> iter::FromIterator<P> for PathBuf {
     fn from_iter<I: IntoIterator<Item = P>>(iter: I) -> PathBuf {