Skip to main content

LibManifest

Struct LibManifest 

Source
pub struct LibManifest {
    pub id: Symbol,
    pub version: Version,
    pub abi: AbiVersion,
    pub target: LibTarget,
    pub requires: Vec<Dependency>,
    pub capabilities: Vec<CapabilityName>,
    pub exports: Vec<Export>,
}
Expand description

The self-description a library presents at load time.

The manifest names the library, its version and ABI, how it is loaded, what it requires, what capabilities it requests, and what it exports. The kernel validates and registers against this; the library supplies it.

Fields§

§id: Symbol

Symbol identifying the library.

§version: Version

The library’s version.

§abi: AbiVersion

The ABI version the library targets.

§target: LibTarget

How the library is loaded.

§requires: Vec<Dependency>

Other libraries this one depends on.

§capabilities: Vec<CapabilityName>

Capabilities the library requests at load time.

§exports: Vec<Export>

The exports the library declares.

Implementations§

Source§

impl LibManifest

Source

pub fn declared_export_records(&self) -> Vec<ExportRecord>

Returns a Declared ExportRecord for each declared export.

§Examples
use sim_kernel::library::{
    AbiVersion, Export, ExportKind, LibManifest, LibTarget, Version,
};
use sim_kernel::Symbol;

let manifest = LibManifest {
    id: Symbol::new("demo"),
    version: Version("0.1.0".to_owned()),
    abi: AbiVersion { major: 0, minor: 1 },
    target: LibTarget::HostRegistered,
    requires: Vec::new(),
    capabilities: Vec::new(),
    exports: vec![Export::Value { symbol: Symbol::new("answer") }],
};

let records = manifest.declared_export_records();
assert_eq!(records.len(), 1);
assert_eq!(records[0].kind, ExportKind::named(ExportKind::VALUE));

Trait Implementations§

Source§

impl Clone for LibManifest

Source§

fn clone(&self) -> LibManifest

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LibManifest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for LibManifest

Source§

impl PartialEq for LibManifest

Source§

fn eq(&self, other: &LibManifest) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for LibManifest

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.