-
Notifications
You must be signed in to change notification settings - Fork 13.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add more ways to create a PathBuf to docs #41531
Conversation
r? @BurntSushi (rust_highfive has picked a reviewer for you, use r? to override) |
src/libstd/path.rs
Outdated
@@ -1036,14 +1044,40 @@ impl<'a> cmp::Ord for Components<'a> { | |||
/// | |||
/// # Examples | |||
/// | |||
/// You can use `push` to build up a `PathBuf` from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing link to push
method.
src/libstd/path.rs
Outdated
/// path.set_extension("dll"); | ||
/// ``` | ||
/// | ||
/// However, `push` is best used for dynamic situations. This is a better way |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing link to push
method.
src/libstd/path.rs
Outdated
/// let path = PathBuf::from("c:\\windows\system32.dll"); | ||
/// ``` | ||
/// | ||
/// Which method works best depends on what kind of sitaution you're in. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"sitaution"
It'd be nice to document how to create a |
src/libstd/path.rs
Outdated
/// ``` | ||
/// use std::path::PathBuf; | ||
/// | ||
/// let path = PathBuf::from("c:\\windows\system32.dll"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't the path be c:\\windows\\system32.dll
?
BTW, on windows we prefer to write the drive letters as uppercase. How about change the path to C:\\Windows\\system32\\user32.dll
? It's a real file path which exists on almost all Windows installations today.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
on windows we prefer to write the drive letters as uppercase.
I thought so too (I'm a Windows user now) but since it was small before, I didn't change it. Happy to do so
Also, if I check in explorer.exe
, C:\\windows\
does not load, but C:\windows\
does, so maybe it should be the other way? C:\\windows\\
doesn't load either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since Rust is a language which works on multiple platforms, I think that following the conventions on different platform is useful and important.
Here the \\
is a escape sequence in the path string, so the real path is C:\Windows\
(note the path fragment Windows
is capitalized since on Windows the name of this directory is capitailized by default).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was thinking of {
as escapes in format strings, not \\
as an escape, whoops, heh 😓
I would suggest using raw string to avoid escapes.
…On Apr 26, 2017 12:49 PM, "mzji" ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
In src/libstd/path.rs
<#41531 (comment)>:
> +/// However, `push` is best used for dynamic situations. This is a better way
+/// to do this when you know all of the components ahead of time:
+///
+/// ```
+/// use std::path::PathBuf;
+///
+/// let path: PathBuf = ["c:\\", "windows", "system32.dll"].iter().collect();
+/// ```
+///
+/// We can still do better than this! Since these are all strings, we can use
+/// `From::from`:
+///
+/// ```
+/// use std::path::PathBuf;
+///
+/// let path = PathBuf::from("c:\\windows\system32.dll");
Here the \\ is a escape sequence in the path string, so the real path *is*
C:\Windows\ (note the path fragment Windows is capitalized since on
Windows the name of this directory is capitailized by default).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#41531 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AApc0rOkpDhRbXAT7voA5o4N1LyTJDM4ks5rzxNEgaJpZM4NHTJ_>
.
|
I plan on updating this PR early next week; sorry about the delay. |
Looks like there's a test failure for you to fix when you get back to this o.O:
|
I believe I've fixed up everything; let's see what Travis says.
I agree this would be neat, but I don't know how either. I guess |
The best way to do this wasn't in the documentation, and the ways that were there needed some extra text to elaborate. Fixes rust-lang#40159
I'd recommend |
@alexcrichton The problem there is that it doesn't work as soon as you've filtered or done any other similar iterator operation on |
Ah in that case we have |
/// ``` | ||
/// use std::path::PathBuf; | ||
/// | ||
/// let path: PathBuf = [r"C:\", "windows", "system32.dll"].iter().collect(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The \
after C:
should not be necessary here?
@alexcrichton No, that doesn't work either (https://is.gd/yG5UPk), since |
Component of a path is always a valid path. The changes to me seem good and I’d r+; it seems to me like discussion about Components could be separate. |
@bors r+ rollup @Mark-Simulacrum could you please fill a separate issue for |
📌 Commit 23382e6 has been approved by |
Filed #41866. |
Add more ways to create a PathBuf to docs The best way to do this wasn't in the documentation, and the ways that were there needed some extra text to elaborate. Fixes rust-lang#40159 /cc @nagisa
Add more ways to create a PathBuf to docs The best way to do this wasn't in the documentation, and the ways that were there needed some extra text to elaborate. Fixes rust-lang#40159 /cc @nagisa
The best way to do this wasn't in the documentation, and the ways that
were there needed some extra text to elaborate.
Fixes #40159
/cc @nagisa