@@ -87,6 +87,7 @@ use io;
87
87
use iter:: { self , FusedIterator } ;
88
88
use ops:: { self , Deref } ;
89
89
use rc:: Rc ;
90
+ use str:: FromStr ;
90
91
use sync:: Arc ;
91
92
92
93
use ffi:: { OsStr , OsString } ;
@@ -1441,6 +1442,32 @@ impl From<String> for PathBuf {
1441
1442
}
1442
1443
}
1443
1444
1445
+ /// Error returned from [`PathBuf::from_str`][`from_str`].
1446
+ ///
1447
+ /// Note that parsing a path will never fail. This error is just a placeholder
1448
+ /// for implementing `FromStr` for `PathBuf`.
1449
+ ///
1450
+ /// [`from_str`]: struct.PathBuf.html#method.from_str
1451
+ #[ derive( Debug , Clone , PartialEq , Eq ) ]
1452
+ #[ stable( feature = "path_from_str" , since = "1.26.0" ) ]
1453
+ pub enum ParsePathError { }
1454
+
1455
+ #[ stable( feature = "path_from_str" , since = "1.26.0" ) ]
1456
+ impl fmt:: Display for ParsePathError {
1457
+ fn fmt ( & self , _: & mut fmt:: Formatter ) -> fmt:: Result {
1458
+ match * self { }
1459
+ }
1460
+ }
1461
+
1462
+ #[ stable( feature = "path_from_str" , since = "1.26.0" ) ]
1463
+ impl FromStr for PathBuf {
1464
+ type Err = ParsePathError ;
1465
+
1466
+ fn from_str ( s : & str ) -> Result < Self , Self :: Err > {
1467
+ Ok ( PathBuf :: from ( s) )
1468
+ }
1469
+ }
1470
+
1444
1471
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1445
1472
impl < P : AsRef < Path > > iter:: FromIterator < P > for PathBuf {
1446
1473
fn from_iter < I : IntoIterator < Item = P > > ( iter : I ) -> PathBuf {
0 commit comments