1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use std::io; use std::path::Path; #[cfg(unix)] pub fn device_num<P: AsRef<Path>>(path: P) -> io::Result<u64> { use std::os::unix::fs::MetadataExt; path.as_ref().metadata().map(|md| md.dev()) } #[cfg(windows)] pub fn device_num<P: AsRef<Path>>(path: P) -> io::Result<u64> { use winapi_util::{file, Handle}; let h = Handle::from_path_any(path)?; file::information(h).map(|info| info.volume_serial_number()) } #[cfg(not(any(unix, windows)))] pub fn device_num<P: AsRef<Path>>(_: P) -> io::Result<u64> { Err(io::Error::new( io::ErrorKind::Other, "walkdir: same_file_system option not supported on this platform", )) }