pub struct Bundle<M>where
M: Manifest,{ /* private fields */ }
Expand description
A Manifest bundled together, optionally, with the Resources that it describes. This is meant to be serialized for standalone distribution, and deserialized by the receiver.
The manifest may describe locations of resources not included in the Bundle.
Implementations§
source§impl<M> Bundle<M>where
M: Manifest,
impl<M> Bundle<M>where
M: Manifest,
sourcepub fn new<R: IntoIterator<Item = (PathBuf, ResourceBytes)>>(
manifest: M,
resources: R,
root_dir: PathBuf,
) -> MrBundleResult<Self>
pub fn new<R: IntoIterator<Item = (PathBuf, ResourceBytes)>>( manifest: M, resources: R, root_dir: PathBuf, ) -> MrBundleResult<Self>
Creates a bundle containing a manifest and a collection of resources to be bundled together with the manifest.
The paths paired with each resource must correspond to the set of
Location::Bundle
s specified in the Manifest::location()
, or else
this is not a valid bundle.
A base directory must also be supplied so that relative paths can be resolved into absolute ones.
sourcepub fn new_unchecked<R: IntoIterator<Item = (PathBuf, ResourceBytes)>>(
manifest: M,
resources: R,
) -> MrBundleResult<Self>
pub fn new_unchecked<R: IntoIterator<Item = (PathBuf, ResourceBytes)>>( manifest: M, resources: R, ) -> MrBundleResult<Self>
Create a bundle, asserting that all paths in the Manifest are absolute.
sourcepub fn update_manifest(self, manifest: M) -> MrBundleResult<Self>
pub fn update_manifest(self, manifest: M) -> MrBundleResult<Self>
Return a new Bundle with an updated manifest, subject to the same validation constraints as creating a new Bundle from scratch.
sourcepub async fn read_from_file(path: &Path) -> MrBundleResult<Self>
pub async fn read_from_file(path: &Path) -> MrBundleResult<Self>
Load a Bundle into memory from a file
sourcepub async fn write_to_file(&self, path: &Path) -> MrBundleResult<()>
pub async fn write_to_file(&self, path: &Path) -> MrBundleResult<()>
Write a Bundle to a file
sourcepub async fn resolve(
&self,
location: &Location,
) -> MrBundleResult<Cow<'_, ResourceBytes>>
pub async fn resolve( &self, location: &Location, ) -> MrBundleResult<Cow<'_, ResourceBytes>>
Retrieve the bytes for a resource at a Location, downloading it if necessary
sourcepub async fn resolve_all(
&self,
) -> MrBundleResult<HashMap<Location, Cow<'_, ResourceBytes>>>
pub async fn resolve_all( &self, ) -> MrBundleResult<HashMap<Location, Cow<'_, ResourceBytes>>>
Return the full set of resources specified by this bundle’s manifest. References to bundled resources can be returned directly, while all others will be fetched from the filesystem or the network.
sourcepub async fn resolve_all_cloned(
&self,
) -> MrBundleResult<HashMap<Location, ResourceBytes>>
pub async fn resolve_all_cloned( &self, ) -> MrBundleResult<HashMap<Location, ResourceBytes>>
Resolve all resources, but with fully owned references
sourcepub fn bundled_resources(&self) -> &BTreeMap<PathBuf, ResourceBytes>
pub fn bundled_resources(&self) -> &BTreeMap<PathBuf, ResourceBytes>
Access the map of resources included in this bundle
Bundled resources are also accessible via resolve
or resolve_all
,
but using this method prevents a Clone
sourcepub fn encode(&self) -> MrBundleResult<Vec<u8>>
pub fn encode(&self) -> MrBundleResult<Vec<u8>>
An arbitrary and opaque encoding of the bundle data into a byte array
sourcepub fn decode(bytes: &[u8]) -> MrBundleResult<Self>
pub fn decode(bytes: &[u8]) -> MrBundleResult<Self>
Decode bytes produced by encode
Trait Implementations§
source§impl<'de, M> Deserialize<'de> for Bundle<M>where
M: Manifest + DeserializeOwned,
impl<'de, M> Deserialize<'de> for Bundle<M>where
M: Manifest + DeserializeOwned,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl<M> Eq for Bundle<M>
impl<M> StructuralPartialEq for Bundle<M>where
M: Manifest,
Auto Trait Implementations§
impl<M> Freeze for Bundle<M>where
M: Freeze,
impl<M> RefUnwindSafe for Bundle<M>where
M: RefUnwindSafe,
impl<M> Send for Bundle<M>where
M: Send,
impl<M> Sync for Bundle<M>where
M: Sync,
impl<M> Unpin for Bundle<M>where
M: Unpin,
impl<M> UnwindSafe for Bundle<M>where
M: UnwindSafe,
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
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.