PathBuf can update path-shaped data in memory before a program decides where to write.

Program

Play the program to choose an output extension and update the report path.

set_path_extension.rs
use std::path::PathBuf;

fn main() {
    let extension = ;
    let mut path = PathBuf::from("report.tmp");
    path.set_extension(extension);
    println!("{}", path.display());
}
use std::path::PathBuf;

fn main() {
    let extension = ;
    let mut path = PathBuf::from("report.tmp");
    path.set_extension(extension);
    println!("{}", path.display());
}
use std::path::PathBuf;

fn main() {
    let extension = ;
    let mut path = PathBuf::from("report.tmp");
    path.set_extension(extension);
    println!("{}", path.display());
}
PathBuf `PathBuf` owns path-shaped data and can be modified.
set_extension `set_extension` replaces the filename extension in place.
model first This example models path selection without performing filesystem writes.