@@ -3345,65 +3345,76 @@ impl Error for StripPrefixError {
3345
3345
/// Makes the path absolute without accessing the filesystem.
3346
3346
///
3347
3347
/// If the path is relative, the current directory is used as the base directory.
3348
- /// All intermediate components will be resolved according to platforms -specific
3349
- /// rules but unlike [`canonicalize`][crate::fs::canonicalize] this does not
3348
+ /// All intermediate components will be resolved according to platform -specific
3349
+ /// rules, but unlike [`canonicalize`][crate::fs::canonicalize], this does not
3350
3350
/// resolve symlinks and may succeed even if the path does not exist.
3351
3351
///
3352
3352
/// If the `path` is empty or getting the
3353
- /// [current directory][crate::env::current_dir] fails then an error will be
3353
+ /// [current directory][crate::env::current_dir] fails, then an error will be
3354
3354
/// returned.
3355
3355
///
3356
+ /// # Platform-specific behavior
3357
+ ///
3358
+ /// On POSIX platforms, the path is resolved using [POSIX semantics][posix-semantics],
3359
+ /// except that it stops short of resolving symlinks. This means it will keep `..`
3360
+ /// components and trailing slashes.
3361
+ ///
3362
+ /// On Windows, for verbatim paths, this will simply return the path as given. For other
3363
+ /// paths, this is currently equivalent to calling
3364
+ /// [`GetFullPathNameW`][windows-path].
3365
+ ///
3366
+ /// Note that these [may change in the future][changes].
3367
+ ///
3368
+ /// # Errors
3369
+ ///
3370
+ /// This function may return an error in the following situations:
3371
+ ///
3372
+ /// * If `path` is syntactically invalid; in particular, if it is empty.
3373
+ /// * If getting the [current directory][crate::env::current_dir] fails.
3374
+ ///
3356
3375
/// # Examples
3357
3376
///
3358
3377
/// ## POSIX paths
3359
3378
///
3360
3379
/// ```
3361
3380
/// # #[cfg(unix)]
3362
3381
/// fn main() -> std::io::Result<()> {
3363
- /// use std::path::{self, Path};
3382
+ /// use std::path::{self, Path};
3364
3383
///
3365
- /// // Relative to absolute
3366
- /// let absolute = path::absolute("foo/./bar")?;
3367
- /// assert!(absolute.ends_with("foo/bar"));
3384
+ /// // Relative to absolute
3385
+ /// let absolute = path::absolute("foo/./bar")?;
3386
+ /// assert!(absolute.ends_with("foo/bar"));
3368
3387
///
3369
- /// // Absolute to absolute
3370
- /// let absolute = path::absolute("/foo//test/.././bar.rs")?;
3371
- /// assert_eq!(absolute, Path::new("/foo/test/../bar.rs"));
3372
- /// Ok(())
3388
+ /// // Absolute to absolute
3389
+ /// let absolute = path::absolute("/foo//test/.././bar.rs")?;
3390
+ /// assert_eq!(absolute, Path::new("/foo/test/../bar.rs"));
3391
+ /// Ok(())
3373
3392
/// }
3374
3393
/// # #[cfg(not(unix))]
3375
3394
/// # fn main() {}
3376
3395
/// ```
3377
3396
///
3378
- /// The path is resolved using [POSIX semantics][posix-semantics] except that
3379
- /// it stops short of resolving symlinks. This means it will keep `..`
3380
- /// components and trailing slashes.
3381
- ///
3382
3397
/// ## Windows paths
3383
3398
///
3384
3399
/// ```
3385
3400
/// # #[cfg(windows)]
3386
3401
/// fn main() -> std::io::Result<()> {
3387
- /// use std::path::{self, Path};
3402
+ /// use std::path::{self, Path};
3388
3403
///
3389
- /// // Relative to absolute
3390
- /// let absolute = path::absolute("foo/./bar")?;
3391
- /// assert!(absolute.ends_with(r"foo\bar"));
3404
+ /// // Relative to absolute
3405
+ /// let absolute = path::absolute("foo/./bar")?;
3406
+ /// assert!(absolute.ends_with(r"foo\bar"));
3392
3407
///
3393
- /// // Absolute to absolute
3394
- /// let absolute = path::absolute(r"C:\foo//test\..\./bar.rs")?;
3408
+ /// // Absolute to absolute
3409
+ /// let absolute = path::absolute(r"C:\foo//test\..\./bar.rs")?;
3395
3410
///
3396
- /// assert_eq!(absolute, Path::new(r"C:\foo\bar.rs"));
3397
- /// Ok(())
3411
+ /// assert_eq!(absolute, Path::new(r"C:\foo\bar.rs"));
3412
+ /// Ok(())
3398
3413
/// }
3399
3414
/// # #[cfg(not(windows))]
3400
3415
/// # fn main() {}
3401
3416
/// ```
3402
3417
///
3403
- /// For verbatim paths this will simply return the path as given. For other
3404
- /// paths this is currently equivalent to calling
3405
- /// [`GetFullPathNameW`][windows-path].
3406
- ///
3407
3418
/// Note that this [may change in the future][changes].
3408
3419
///
3409
3420
/// [changes]: io#platform-specific-behavior
0 commit comments