我不知道为$('.typeahead-input').on('typeahead:beforeopen', function() {
return false;
});
返回类型get_best_slide
指定生存期的正确方法。该枚举始终引用Enum
或best_h
之一。
除了返回类型为best_v
之外,它看起来与official doc中的longest
函数示例非常相似。
Enum
编译器不满意:
pub enum Image {
Horizontal { image_id: usize },
Vertical { image_id: usize },
}
pub enum Slide<'a> {
H { h: &'a Image },
V { v: &'a Image, other_v: &'a Image },
}
fn get_best_slide<'a>(
best_score_h: usize,
best_h: Option<&'a Image>,
best_score_v: usize,
best_v: Option<(&'a Image, &'a Image)>,
) -> &'a Option<Slide> {
match (best_h, best_v) {
(None, None) => None,
(Some(h), None) => Some(Slide::H { h }),
(None, Some((v0, v1))) => Some(Slide::V { v: v0, other_v: v1 }),
(Some(h), Some((v0, v1))) => {
if best_score_h >= best_score_v {
Some(Slide::H { h })
} else {
Some(Slide::V { v: v0, other_v: v1 })
}
}
}
}
也许我指定的生命周期参数不在正确的位置?
error[E0106]: missing lifetime specifier
--> src/main.rs:16:17
|
16 | ) -> &'a Option<Slide> {
| ^^^^^ expected lifetime parameter
|
= help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `best_h` or `best_v`
看起来不对&'a Option<Slide>
(编译器同样抱怨)答案 0 :(得分:2)
它需要Slide的寿命参数,您需要对其进行显式设置
-> Option<Slide<'a>>
区别是:
&'a Option<Slide>
意味着我将在Option<Slide>
的整个生命周期内借入'a
,Option<Slide<'a>>
意味着我将在生存期Slide
中创建'a
,以便内部操作可以显式使用此生存期。