#[lang = "sized"] pub trait Sized {} pub enum Option<T> { Some(T), None, } pub use Option::{None, Some}; #[lang = "fn_once"] pub trait FnOnce<Args> { #[lang = "fn_once_output"] type Output; extern "rust-call" fn call_once(self, args: Args) -> Self::Output; } impl<T> Option<T> { pub fn map<R, F: FnOnce(T) -> R>(self, f: F) -> Option<R> { match self { Some(value) => Some(f(value)), None => None, } } }