Implement MutNullableJS::or_init.

This will make it easier to implement lazy getters.
This commit is contained in:
Ms2ger 2014-12-04 15:49:29 +01:00
parent 9416e9b11a
commit d26283c065

View file

@ -248,6 +248,17 @@ impl<T: Reflectable> MutNullableJS<T> {
pub unsafe fn get_inner(&self) -> Option<JS<T>> { pub unsafe fn get_inner(&self) -> Option<JS<T>> {
self.ptr.get() self.ptr.get()
} }
pub fn or_init(&self, cb: || -> Temporary<T>) -> Temporary<T> {
match self.get() {
Some(inner) => inner,
None => {
let inner = cb();
self.assign(Some(inner));
inner
},
}
}
} }
impl<T: Reflectable> JS<T> { impl<T: Reflectable> JS<T> {