EG
Size: a a a
EG
AZ
[("def", def), ("defn", defn), ...].iter()
.map(|(x, y)| Function { name: Cow::Borrowed(x), call : Arc::new(y))
.collect()
p
EG
spli> (defn 'add '(a b) '(+ a b))
{function add} :: function
spli> add
{function add} :: function
AZ
VS
EG
[("def", def), ("defn", defn), ...].iter()
.map(|(x, y)| Function { name: Cow::Borrowed(x), call : Arc::new(y))
.collect()
VS
p
VS
EG
EG
function
.Arc<dyn Fn>
и это проблематично тем, что потом неясно, как делать модулиEG
EG
VS
AZ
fn extend_lifetime<'a, T>(val: &'a T) -> &'static T {
unsafe { std::mem::transmute(val) }
}
'a
(где-то в сейф-коде) у тебя инвалидируется ссылка и сломается гарантия на валидность ссылок там, где ты об этом не подозреваешь.EG
AZ
AZ