fn main() {
let asset = include_zstd::include_zstd!("sample.txt");
let metadata = asset.metadata();
println!("文件大小: {} 字节", metadata.len);
println!("是否为文件: {}", metadata.is_file);
println!("是否为目录: {}", metadata.is_dir);
if let Some(modified) = metadata.modified {
println!("修改时间: {:?}", modified);
}
let bytes = asset.bytes();
println!("解压后内容长度: {} 字节", bytes.len());
println!(
"内容预览:\n{}",
String::from_utf8_lossy(&bytes[..bytes.len().min(200)])
);
let ptr1 = asset.bytes().as_ptr();
let ptr2 = asset.bytes().as_ptr();
assert_eq!(ptr1, ptr2, "缓存机制应该返回相同的指针");
println!("\n缓存验证通过:两次调用 bytes() 返回相同指针");
}
#[cfg(test)]
mod tests {
#[test]
fn test_include_zstd_loads_file() {
let asset = include_zstd::include_zstd!("sample.txt");
assert!(asset.metadata().is_file);
assert!(!asset.metadata().is_dir);
assert_eq!(asset.metadata().len, 82); }
#[test]
fn test_include_zstd_bytes_correct() {
let asset = include_zstd::include_zstd!("sample.txt");
let bytes = asset.bytes();
let content = String::from_utf8_lossy(bytes);
assert!(content.contains("Hello, include-zstd!"));
assert!(content.contains("sample file for testing"));
}
#[test]
fn test_include_zstd_caching() {
let asset = include_zstd::include_zstd!("sample.txt");
let ptr1 = asset.bytes().as_ptr();
let ptr2 = asset.bytes().as_ptr();
assert_eq!(ptr1, ptr2, "多次调用 bytes() 应该返回相同指针");
}
}