Home
Head's Up: I'm in the middle of upgrading my site. Most things are in place, but there are something missing and/or broken including image alt text. Please bear with me while I'm getting things fixed.

Rust PathBuf Examples

These are examples of the functions and features available in Rusts PathBuf

This is a work in progress making examples from > this page > https : //doc.rust - lang.org/std/path/struct.PathBuf.html#method.display >

Pop

rust
use std::path::PathBuf;

fn main() {
    let mut path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    path.pop();
    dbg! {path};
}
results full

NOTE : the pop just returns true not the item that was popped as far as I can tell

Set Extension

rust
fn main() {
    let mut path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    path.set_extension("neo");
    dbg! {path};
}
results full

Set File Name

rust
fn main() {
    let mut path = PathBuf::from("/Users/alan/Desktop/bravo.v2.txt");
    path.set_file_name("bravo.v2.txt");
    dbg! {path};
}
results full

Ancestors

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let ancestors = path.ancestors();
    ancestors.for_each(|x| println!("{}", x.display()));
}
results full

Canonicalize

rust
fn main() {
    let mut path = PathBuf::from("/Users/alan/Desktop/subdir/../alfa.v1.txt");
    path = path.canonicalize().unwrap();
    dbg! {path};
}
results full

Components

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let components = path.components();
    dbg! {components};
}
results full

Display Name

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let display_name = path.display();
    dbg! {display_name};
}
results full

Extension

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let extension = path.extension().unwrap();
    dbg! {extension};
}
results full

File Name

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let file_name = path.file_name().unwrap();
    dbg! {file_name};
}
results full

File Stem

(There's a [TODO: Code shorthand span ] that's in nightly as well that will do a similar thing as thise but return [TODO: Code shorthand span ] instead)

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let file_stem = path.file_stem().unwrap();
    dbg! {file_stem};
}
results full

Join Paths

This creates a new path from the joined parts

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop");
    let joined_path = path.join("alfa.v1.txt");
    dbg! {joined_path};
}
results full

Metadata

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let metadata = path.metadata().unwrap();
    dbg! {metadata};
}
results full

Parent

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let parent = path.parent().unwrap();
    dbg! {parent};
}
results full

Strip Prefix

rust
fn main() {
    let path = PathBuf::from("/Users/alan/Desktop/alfa.v1.txt");
    let prefix_removed = path.strip_prefix("/Users/alan/").unwrap();
    dbg! {prefix_removed};
}
results full

A basic rundown of Rust path features