Rollup merge of #36101 - frewsxcv:debug-path-components, r=alexcrichton
Implement `Debug` for `std::path::{Components,Iter}`. None
This commit is contained in:
commit
1048ea24e1
1 changed files with 81 additions and 0 deletions
|
@ -639,6 +639,25 @@ pub struct Iter<'a> {
|
|||
inner: Components<'a>,
|
||||
}
|
||||
|
||||
#[stable(feature = "path_components_debug", since = "1.13.0")]
|
||||
impl<'a> fmt::Debug for Components<'a> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
struct DebugHelper<'a>(&'a Path);
|
||||
|
||||
impl<'a> fmt::Debug for DebugHelper<'a> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
f.debug_list()
|
||||
.entries(self.0.components())
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
f.debug_tuple("Components")
|
||||
.field(&DebugHelper(self.as_path()))
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Components<'a> {
|
||||
// how long is the prefix, if any?
|
||||
#[inline]
|
||||
|
@ -818,6 +837,25 @@ impl<'a> AsRef<OsStr> for Components<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "path_iter_debug", since = "1.13.0")]
|
||||
impl<'a> fmt::Debug for Iter<'a> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
struct DebugHelper<'a>(&'a Path);
|
||||
|
||||
impl<'a> fmt::Debug for DebugHelper<'a> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
f.debug_list()
|
||||
.entries(self.0.iter())
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
f.debug_tuple("Iter")
|
||||
.field(&DebugHelper(self.as_path()))
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Iter<'a> {
|
||||
/// Extracts a slice corresponding to the portion of the path remaining for iteration.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -3483,4 +3521,47 @@ mod tests {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_components_debug() {
|
||||
let path = Path::new("/tmp");
|
||||
|
||||
let mut components = path.components();
|
||||
|
||||
let expected = "Components([RootDir, Normal(\"tmp\")])";
|
||||
let actual = format!("{:?}", components);
|
||||
assert_eq!(expected, actual);
|
||||
|
||||
let _ = components.next().unwrap();
|
||||
let expected = "Components([Normal(\"tmp\")])";
|
||||
let actual = format!("{:?}", components);
|
||||
assert_eq!(expected, actual);
|
||||
|
||||
let _ = components.next().unwrap();
|
||||
let expected = "Components([])";
|
||||
let actual = format!("{:?}", components);
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[cfg(unix)]
|
||||
#[test]
|
||||
fn test_iter_debug() {
|
||||
let path = Path::new("/tmp");
|
||||
|
||||
let mut iter = path.iter();
|
||||
|
||||
let expected = "Iter([\"/\", \"tmp\"])";
|
||||
let actual = format!("{:?}", iter);
|
||||
assert_eq!(expected, actual);
|
||||
|
||||
let _ = iter.next().unwrap();
|
||||
let expected = "Iter([\"tmp\"])";
|
||||
let actual = format!("{:?}", iter);
|
||||
assert_eq!(expected, actual);
|
||||
|
||||
let _ = iter.next().unwrap();
|
||||
let expected = "Iter([])";
|
||||
let actual = format!("{:?}", iter);
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue