[−][src]Function crev_common::sanitize_name_for_fs
pub fn sanitize_name_for_fs(s: &str) -> PathBuf
Takes a name and converts it to something safe for use in paths etc.
Examples
// Pass through when able assert_eq!(sanitize_name_for_fs("lazy_static"), Path::new("lazy_static-Bda78Hdy9hiPaGTczi9ADA")); // Hash reserved windows filenames (or any other 3 letter name) assert_eq!(sanitize_name_for_fs("CON"), Path::new("CON--NhvzH8hSGvoA4DSfBFbpg")); // Hash on escaped chars to avoid collisions assert_eq!(sanitize_name_for_fs("://baluga.?io"), Path::new("___baluga__io-7zPdDFu-AyMMKrFrpmY7BQ")); // Limit absurdly long names. Combining a bunch of these can still run into filesystem limits however. let a16 = std::iter::repeat("a").take( 16).collect::<String>(); let a2048 = std::iter::repeat("a").take(2048).collect::<String>(); let a2049 = std::iter::repeat("a").take(2049).collect::<String>(); assert_eq!(sanitize_name_for_fs(a2048.as_str()).to_str().unwrap(), format!("{}-4iupJgrBwxluPQ8DRmrnXg", a16)); assert_eq!(sanitize_name_for_fs(a2049.as_str()).to_str().unwrap(), format!("{}-VMRqy6kfWHPoPp1iKIGt1A", a16));