Instantiate takes reference

This commit is contained in:
Lachlan Sneff
2019-02-02 15:58:33 -08:00
parent eba66f3b33
commit ccd43df767
9 changed files with 23 additions and 36 deletions

View File

@ -2,15 +2,15 @@ use crate::export::Export;
use hashbrown::{hash_map::Entry, HashMap};
pub trait LikeNamespace {
fn get_export(&mut self, name: &str) -> Option<Export>;
fn get_export(&self, name: &str) -> Option<Export>;
}
pub trait IsExport {
fn to_export(&mut self) -> Export;
fn to_export(&self) -> Export;
}
impl IsExport for Export {
fn to_export(&mut self) -> Export {
fn to_export(&self) -> Export {
self.clone()
}
}
@ -76,10 +76,8 @@ impl ImportObject {
}
}
pub fn get_namespace(&mut self, namespace: &str) -> Option<&mut (dyn LikeNamespace + 'static)> {
self.map
.get_mut(namespace)
.map(|namespace| &mut **namespace)
pub fn get_namespace(&self, namespace: &str) -> Option<&(dyn LikeNamespace + 'static)> {
self.map.get(namespace).map(|namespace| &**namespace)
}
}
@ -104,9 +102,7 @@ impl Namespace {
}
impl LikeNamespace for Namespace {
fn get_export(&mut self, name: &str) -> Option<Export> {
self.map
.get_mut(name)
.map(|is_export| is_export.to_export())
fn get_export(&self, name: &str) -> Option<Export> {
self.map.get(name).map(|is_export| is_export.to_export())
}
}