miden_assembly/linker/
library.rs1use alloc::{sync::Arc, vec::Vec};
2
3use miden_assembly_syntax::module::ModuleInfo;
4use miden_mast_package::{ManifestValidationError, MastForest, Package};
5pub use miden_project::Linkage;
6
7#[derive(Clone)]
10pub struct LinkLibrary {
11 pub package: Arc<Package>,
12 pub linkage: Linkage,
14}
15
16impl LinkLibrary {
17 pub fn from_package(package: Arc<Package>) -> Self {
19 Self { package, linkage: Linkage::Dynamic }
20 }
21
22 pub fn with_linkage(mut self, linkage: Linkage) -> Self {
24 self.linkage = linkage;
25 self
26 }
27
28 #[inline(always)]
29 pub fn mast(&self) -> &Arc<MastForest> {
30 self.package.mast_forest()
31 }
32
33 #[inline]
34 pub fn module_infos(&self) -> Result<Vec<ModuleInfo>, ManifestValidationError> {
35 self.package.try_module_infos()
36 }
37}