use soft_canonicalize::soft_canonicalize;
use std::path::Path;
fn main() -> std::io::Result<()> {
println!("=== Soft Canonicalize - Basic Usage Examples ===\n");
println!("1. Canonicalizing existing path:");
let temp_dir = std::env::temp_dir();
let existing = soft_canonicalize(&temp_dir)?;
println!(" Input: {temp_dir:?}");
println!(" Output: {existing:?}\n");
println!("2. Canonicalizing non-existing path:");
let non_existing_path = temp_dir.join("some/deep/non/existing/path.txt");
let non_existing = soft_canonicalize(&non_existing_path)?;
println!(" Input: {non_existing_path:?}");
println!(" Output: {non_existing:?}\n");
println!("3. Canonicalizing relative path:");
let relative_path = Path::new("examples/relative/file.txt");
let relative = soft_canonicalize(relative_path)?;
println!(" Input: {relative_path:?}");
println!(" Output: {relative:?}\n");
println!("4. Resolving directory traversal:");
let traversal_path = Path::new("some/path/../other/file.txt");
let traversal = soft_canonicalize(traversal_path)?;
println!(" Input: {traversal_path:?}");
println!(" Output: {traversal:?}\n");
println!("5. Complex traversal pattern:");
let complex_path = Path::new("deep/nested/path/../../final/file.txt");
let complex = soft_canonicalize(complex_path)?;
println!(" Input: {complex_path:?}");
println!(" Output: {complex:?}\n");
println!("6. Current directory references:");
let current_dir_path = Path::new("./some/./path/./file.txt");
let current_dir = soft_canonicalize(current_dir_path)?;
println!(" Input: {current_dir_path:?}");
println!(" Output: {current_dir:?}\n");
println!("7. Mixed existing and non-existing components:");
let mixed_path = temp_dir.join("new_folder/subfolder/file.txt");
let mixed = soft_canonicalize(&mixed_path)?;
println!(" Input: {mixed_path:?}");
println!(" Output: {mixed:?}\n");
println!("All examples completed successfully!");
Ok(())
}