【发布时间】:2015-04-25 07:13:03
【问题描述】:
我有一个选项切片,并给定一个值,如果该值是切片中的有效索引,我想使用该索引处的值,否则使用None。
现在,值需要能够被重用,所以我想我想从我的切片中借用,而不是移动...注意 Foo 没有实现 Copy 特征,我更愿意保留就这样吧。
我需要经常这样做,所以返回&Option<Foo> 的函数似乎是合适的,并添加了生命周期说明符,因为显然返回值不应该超过它借用的切片。这导致我:
fn get_or_none<'a>(data: &'a [Option<Foo>], bar: u8) -> &'a Option<Foo> {
match bar as usize {
idx if idx < data.len() => &data[idx],
_ => &None // obviously can't work
}
}
这显然是错误的。我现在可以作弊,因为我知道对于这个特定的应用程序,切片中的第一个值将始终为 None(可以这么说,这是我的数据的一个属性),但这只是在避免问题。
我应该怎么做?
【问题讨论】:
标签: rust