pub struct Volume { /* private fields */ }
Expand description
A WEBC volume.
A Volume
represents a collection of files and directories, providing
methods to read file contents and traverse directories.
§Example
#[cfg(not(feature = "v3"))]
#[cfg(feature = "v3")]
use webc::{Metadata, Volume};
fn get_webc_volume() -> Volume {
/* ... */
Timestamps::default(),
}
let another_hash: [u8; 32] = sha2::Sha256::digest(b"Another").into();
let file_hash: [u8; 32] = sha2::Sha256::digest(b"Hello, World!").into();
let to_hash: [u8; 32] = sha2::Sha256::digest(&file_hash).into();
let path_hash: [u8; 32] = sha2::Sha256::digest(&to_hash).into();
let volume = get_webc_volume();
// Accessing file content.
let (content, hash) = volume.read_file("/path/to/file.txt").unwrap();
assert_eq!(content, b"Hello, World!");
assert_eq!(hash, Some(file_hash));
// Inspect directories.
let timestamps = Some(webc::Timestamps::default());
let entries = volume.read_dir("/").unwrap();
assert_eq!(entries.len(), 2);
assert_eq!(entries[0], (
PathSegment::parse("another.txt").unwrap(),
Some(another_hash),
Metadata::File { length: 7, timestamps },
));
assert_eq!(entries[1], (
PathSegment::parse("path").unwrap(),
Some(path_hash),
Metadata::Dir { timestamps },
));
Implementations§
Source§impl Volume
impl Volume
Sourcepub fn metadata(&self, path: impl ToPathSegments) -> Option<Metadata>
pub fn metadata(&self, path: impl ToPathSegments) -> Option<Metadata>
Get the metadata of an item at the given path.
Returns None
if the item does not exist in the volume or an internal
error occurred.
Sourcepub fn read_dir(
&self,
path: impl ToPathSegments,
) -> Option<Vec<(PathSegment, Option<[u8; 32]>, Metadata)>>
pub fn read_dir( &self, path: impl ToPathSegments, ) -> Option<Vec<(PathSegment, Option<[u8; 32]>, Metadata)>>
Read the contents of a directory at the given path.
Returns a vector of directory entries, including their metadata, if the path is a directory.
Returns None
if the path does not exist or is not a directory.
Sourcepub fn read_file(
&self,
path: impl ToPathSegments,
) -> Option<(OwnedBuffer, Option<[u8; 32]>)>
pub fn read_file( &self, path: impl ToPathSegments, ) -> Option<(OwnedBuffer, Option<[u8; 32]>)>
Read the contents of a file at the given path.
Returns None
if the path is not valid or the file is not found.
Sourcepub fn unpack(
&self,
volume_path: impl ToPathSegments,
out_dir: &Path,
) -> Result<(), ContainerError>
pub fn unpack( &self, volume_path: impl ToPathSegments, out_dir: &Path, ) -> Result<(), ContainerError>
Unpack a subdirectory of this volume into a local directory.
Use ‘/’ as the volume_path to unpack the entire volume.
Trait Implementations§
Source§impl From<VolumeSection> for Volume
Available on crate feature v2
only.
impl From<VolumeSection> for Volume
Available on crate feature
v2
only.Source§fn from(value: VolumeSection) -> Self
fn from(value: VolumeSection) -> Self
Converts to this type from the input type.
Source§impl From<VolumeSection> for Volume
Available on crate feature v3
only.
impl From<VolumeSection> for Volume
Available on crate feature
v3
only.Source§fn from(value: VolumeSection) -> Self
fn from(value: VolumeSection) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for Volume
impl !RefUnwindSafe for Volume
impl Send for Volume
impl Sync for Volume
impl Unpin for Volume
impl !UnwindSafe for Volume
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)