example_usage/
example_usage.rs1fn main() {
8 let asset = include_zstd::include_zstd!("sample.txt");
11
12 let metadata = asset.metadata();
14 println!("文件大小: {} 字节", metadata.len);
15 println!("是否为文件: {}", metadata.is_file);
16 println!("是否为目录: {}", metadata.is_dir);
17
18 if let Some(modified) = metadata.modified {
19 println!("修改时间: {:?}", modified);
20 }
21
22 let bytes = asset.bytes();
24 println!("解压后内容长度: {} 字节", bytes.len());
25 println!(
26 "内容预览:\n{}",
27 String::from_utf8_lossy(&bytes[..bytes.len().min(200)])
28 );
29
30 let ptr1 = asset.bytes().as_ptr();
32 let ptr2 = asset.bytes().as_ptr();
33 assert_eq!(ptr1, ptr2, "缓存机制应该返回相同的指针");
34 println!("\n缓存验证通过:两次调用 bytes() 返回相同指针");
35}
36
37#[cfg(test)]
38mod tests {
39 #[test]
40 fn test_include_zstd_loads_file() {
41 let asset = include_zstd::include_zstd!("sample.txt");
42
43 assert!(asset.metadata().is_file);
45 assert!(!asset.metadata().is_dir);
46 assert_eq!(asset.metadata().len, 82); }
48
49 #[test]
50 fn test_include_zstd_bytes_correct() {
51 let asset = include_zstd::include_zstd!("sample.txt");
52 let bytes = asset.bytes();
53
54 let content = String::from_utf8_lossy(bytes);
56 assert!(content.contains("Hello, include-zstd!"));
57 assert!(content.contains("sample file for testing"));
58 }
59
60 #[test]
61 fn test_include_zstd_caching() {
62 let asset = include_zstd::include_zstd!("sample.txt");
63
64 let ptr1 = asset.bytes().as_ptr();
66 let ptr2 = asset.bytes().as_ptr();
67 assert_eq!(ptr1, ptr2, "多次调用 bytes() 应该返回相同指针");
68 }
69}