我正在为数据库项目开发类型系统。一个问题是将类型id映射到给定类型id和地址的读取器,函数可以返回给定内置u32
,String
的任何数据类型到定义的结构。
我对作家没有任何问题,比如这样的宏
fn set_val (data: &Any, id:i32, mem_ptr: usize) {
match id {
$(
$id => $io::write(*data.downcast_ref::<$t>().unwrap(), mem_ptr),
)*
_ => (),
}
}
但是对于读者来说Any
似乎不适合用作返回值,因为the trait bound "std::any::Any + 'static: std::marker::Sized" is not satisfied
。我也试图作为参考返回,但我被困在一生
fn get_val (id:i32, mem_ptr: usize) -> Option<& Any> {
match id {
$(
$id => Some(&$io::read(mem_ptr)),
)*
_ => None,
}
}
抱怨missing lifetime specifier
。如果'static
因为返回值不够活跃而无法在这里工作,我该如何在此处指定生命周期?
PS。 $ io的read函数返回任何类型的类型。