wasmer_package/package/volume/
mod.rs1pub(crate) mod fs;
2pub(crate) mod in_memory;
3
4use std::{fmt::Debug, sync::Arc};
5
6use anyhow::Error;
7
8use webc::{v3::write::Directory, AbstractVolume};
9
10use super::Strictness;
11
12pub trait IntoSuper<Super: ?Sized> {
13 fn into_super(self: Arc<Self>) -> Arc<Super>;
14}
15
16impl<T: AbstractVolume + Send + Sync + 'static>
17 IntoSuper<dyn AbstractVolume + Send + Sync + 'static> for T
18{
19 fn into_super(self: Arc<Self>) -> Arc<dyn AbstractVolume + Send + Sync + 'static> {
20 self
21 }
22}
23
24pub trait WasmerPackageVolume:
26 AbstractVolume
27 + Send
28 + Sync
29 + 'static
30 + Debug
31 + IntoSuper<dyn AbstractVolume + Send + Sync + 'static>
32{
33 fn as_volume(self: Arc<Self>) -> Arc<dyn AbstractVolume + Send + Sync + 'static> {
34 self.into_super()
35 }
36
37 fn as_directory_tree(&self, strictness: Strictness) -> Result<Directory<'_>, Error>;
39}