vm-rs 0.2.4

Cross-platform VM lifecycle management — Apple Virtualization.framework (macOS) + Cloud Hypervisor (Linux)
Documentation
//! memory device module

use super::base::Id;

use objc::rc::StrongPtr;
use objc::{class, msg_send, sel, sel_impl};

/// common configure of memory balloon device
pub trait VZMemoryBalloonDeviceConfiguration {
    fn id(&self) -> Id;
}

/// configure of memory balloon device through the Virtio interface
pub struct VZVirtioTraditionalMemoryBalloonDeviceConfiguration(StrongPtr);

impl VZVirtioTraditionalMemoryBalloonDeviceConfiguration {
    pub fn new() -> VZVirtioTraditionalMemoryBalloonDeviceConfiguration {
        unsafe {
            let p = StrongPtr::new(msg_send![
                class!(VZVirtioTraditionalMemoryBalloonDeviceConfiguration),
                new
            ]);
            VZVirtioTraditionalMemoryBalloonDeviceConfiguration(p)
        }
    }
}

impl Default for VZVirtioTraditionalMemoryBalloonDeviceConfiguration {
    fn default() -> Self {
        Self::new()
    }
}

impl VZMemoryBalloonDeviceConfiguration for VZVirtioTraditionalMemoryBalloonDeviceConfiguration {
    fn id(&self) -> Id {
        *self.0
    }
}