Library for parsing and building metainfo files.
Examples
Building and parsing a metainfo file from a directory:
extern crate bip_metainfo;
use bip_metainfo::{MetainfoBuilder, MetainfoFile};
fn main() {
let builder = MetainfoBuilder::new()
.set_created_by("bip_metainfo example")
.set_comment("Metainfo File From A File");
let bytes = builder.build_as_bytes(1, "src", |progress| {
assert!(progress <= 1.0f64);
}).unwrap();
let file = MetainfoFile::from_bytes(&bytes).unwrap();
assert_eq!(file.info().directory(), Some("src"));
}
Building and parsing a metainfo file from direct data:
extern crate bip_metainfo;
use bip_metainfo::{MetainfoBuilder, MetainfoFile, DirectAccessor};
fn main() {
let builder = MetainfoBuilder::new()
.set_created_by("bip_metainfo example")
.set_comment("Metainfo File From A File");
let file_name = "FileName.txt";
let file_data = b"This is our file data, it is already in memory!!!";
let accessor = DirectAccessor::new(file_name, file_data);
let bytes = builder.build_as_bytes(1, accessor, |progress| {
assert!(progress <= 1.0f64);
}).unwrap();
let file = MetainfoFile::from_bytes(&bytes).unwrap();
assert_eq!(file.info().directory(), None);
assert_eq!(file.info().files().count(), 1);
let single_file = file.info().files().next().unwrap();
assert_eq!(single_file.length() as usize, file_data.len());
assert_eq!(single_file.paths().count(), 1);
assert_eq!(single_file.paths().next().unwrap(), file_name);
}