44 个版本 (23 个稳定版)

6.0.0-rc22024 年 8 月 2 日
6.0.0-rc12024 年 5 月 30 日
6.0.0-alpha32024 年 4 月 24 日
5.8.1 2023 年 11 月 22 日
0.4.1 2022 年 12 月 13 日

#76文件系统

Download history 11168/week @ 2024-04-23 5050/week @ 2024-04-30 13107/week @ 2024-05-07 15119/week @ 2024-05-14 16413/week @ 2024-05-21 18992/week @ 2024-05-28 10825/week @ 2024-06-04 22215/week @ 2024-06-11 15436/week @ 2024-06-18 9651/week @ 2024-06-25 24004/week @ 2024-07-02 30878/week @ 2024-07-09 30101/week @ 2024-07-16 15861/week @ 2024-07-23 22910/week @ 2024-07-30 28312/week @ 2024-08-06

每月 103,046 次下载
用于 159 个 Crates(直接使用 17 个)

MIT 和可能 LGPL-2.0-or-later

645KB
15K SLoC

一个用于读取和写入 WEBC 文件的库。

Container 为此 crate 可以处理的各个 WEBC 版本提供了一个抽象。因此,它试图满足最低的共同点,并优先考虑可移植性而不是性能或能力。

use webc::Container;
let bytes: &[u8] = b"\0webc...";

let container = Container::from_bytes(bytes)?;

println!("{:?}", container.manifest());

println!("Atoms:");
for (name, atom) in container.atoms() {
    let length = atom.len();
    println!("{name}: {length} bytes");
}

for (name, volume) in container.volumes() {
    let root_items = volume.read_dir("/").expect("The root directory always exists");
    println!("{name}: {} items", root_items.len());
}

一般来说,在延迟操作期间发生的错误将不会被用户访问。

版本特定的后备

如果需要更多灵活性,请考虑使用 [crate::detect()] 并直接实例化一个兼容的解析器。

use webc::{
    Container,
    Version,
};
use webc::v1::{ParseOptions, WebC};
use webc::v3::read::OwnedReader;
let bytes: &[u8] = b"...";

match webc::detect(bytes) {
    Ok(Version::V1) => {
        let options = ParseOptions::default();
        let webc = WebC::parse(bytes, &options).unwrap();
        if let Some(signature) = webc.signature {
            println!("Package signature: {:?}", signature);
        }
    }
    Ok(Version::V3) => {
        let webc = OwnedReader::parse(bytes).unwrap();
        let index = webc.index();
        let signature = &index.signature;
        if !signature.is_none() {
            println!("Package signature: {signature:?}");
        }
    }
    Ok(other) => todo!("Unsupported version, {other}"),
    Err(e) => todo!("An error occurred: {e}"),
}

功能标志

依赖关系

~6–21MB
~327K SLoC