Stabilize std::path
This commit stabilizes essentially all of the new `std::path` API. The API itself is changed in a couple of ways (which brings it in closer alignment with the RFC): * `.` components are now normalized away, unless they appear at the start of a path. This in turn effects the semantics of e.g. asking for the file name of `foo/` or `foo/.`, both of which yield `Some("foo")` now. This semantics is what the original RFC specified, and is also desirable given early experience rolling out the new API. * The `parent` function now succeeds if, and only if, the path has at least one non-root/prefix component. This change affects `pop` as well. * The `Prefix` component now involves a separate `PrefixComponent` struct, to better allow for keeping both parsed and unparsed prefix data. In addition, the `old_path` module is now deprecated. Closes #23264 [breaking-change]
This commit is contained in:
parent
f899513a30
commit
42c4e481cd
36 changed files with 405 additions and 317 deletions
|
@ -25,6 +25,7 @@ use serialize::{Decodable, Decoder, Encodable, Encoder};
|
|||
use std::fmt;
|
||||
use std::mem;
|
||||
use std::ops::Deref;
|
||||
#[allow(deprecated)]
|
||||
use std::old_path::BytesContainer;
|
||||
use std::rc::Rc;
|
||||
|
||||
|
@ -638,6 +639,7 @@ impl Deref for InternedString {
|
|||
fn deref(&self) -> &str { &*self.string }
|
||||
}
|
||||
|
||||
#[allow(deprecated)]
|
||||
impl BytesContainer for InternedString {
|
||||
fn container_as_bytes<'a>(&'a self) -> &'a [u8] {
|
||||
// FIXME #12938: This is a workaround for the incorrect signature
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue