#![allow(missing_docs)]
#[allow(unused_imports)]
use crate::builder::{ContainerBuilder, Init, OnVm, OnVmArc};
#[allow(unused_imports)]
use crate::error::Result;
#[allow(unused_imports)]
use crate::ids::IntoContainerId;
#[allow(unused_imports)]
use crate::sealed;
#[allow(unused_imports)]
use firkin_vmm::{Running, VirtualMachine};
#[allow(unused_imports)]
use std::sync::Arc;
pub trait CoreContainerFactory: sealed::Sealed {
fn container(&self, id: impl IntoContainerId) -> Result<ContainerBuilder<OnVm<'_>, Init>>;
fn container_shared(
self: &Arc<Self>,
id: impl IntoContainerId,
) -> Result<ContainerBuilder<OnVmArc, Init>>;
}
impl CoreContainerFactory for VirtualMachine<Running> {
fn container(&self, id: impl IntoContainerId) -> Result<ContainerBuilder<OnVm<'_>, Init>> {
let mut builder = ContainerBuilder::new(id.into_container_id()?);
builder.vm = Some(Box::new(self.clone()));
Ok(builder)
}
fn container_shared(
self: &Arc<Self>,
id: impl IntoContainerId,
) -> Result<ContainerBuilder<OnVmArc, Init>> {
let mut builder = ContainerBuilder::new(id.into_container_id()?);
builder.vm = Some(Box::new((**self).clone()));
Ok(builder)
}
}