【发布时间】:2021-11-18 06:38:27
【问题描述】:
我正在使用 druid ui 工具包,这是有效的
fn build_list_item() -> impl Widget<TodoItem> {
Flex::row()
.with_child(Checkbox::new("").lens(TodoItem::completed))
.with_flex_child(
Label::new(|item: &TodoItem, _: &_| item.description.clone()),
1.0,
)
}
// and then
List::new(|| build_list_item())
但我想实现这个
List::new(build_list_item())
所以我这样修改函数
fn build_list_item() -> impl Fn() -> impl Widget<TodoItem> {
|| {
Flex::row()
.with_child(Checkbox::new("").lens(TodoItem::completed))
.with_flex_child(
Label::new(|item: &TodoItem, _: &_| item.description.clone()),
1.0,
)
}
}
并得到类似的编译器错误
error[E0562]: `impl Trait` not allowed outside of function and method return types
--> src/main.rs:33:39
|
33 | fn build_list_item2() -> impl Fn() -> impl Widget<TodoItem> {
| ^^^^^^^^^^^^^^^^^^^^^
如何解决?
【问题讨论】:
-
您是否尝试过将
List::new(build_list_item)与您的原始代码一起使用? -
@Ivan C,很好的答案,
List::new(build_list_item)有效!