【发布时间】:2023-01-25 17:29:22
【问题描述】:
为什么编译:
fn func<T>(
callback: impl FnOnce(&mut i64) -> T,
) -> T {
let v = 42;
callback(&mut 42)
}
但这不是吗?:
fn func<'a, T>(
callback: impl FnOnce(&'a mut i64) -> T,
) -> T {
let v = 42;
callback(&mut 42)
}
即使这样也无法编译:
fn func<'a, T: 'static>(
callback: impl FnOnce(&'a mut i64) -> T,
) -> T {
let v = 42;
callback(&mut 42)
}
有没有办法告诉 Rust 从 callback 返回的 T 不包含对 'a 的任何引用?我以为 : 'static 一般会禁止引用,但它似乎不起作用。不幸的是,我确实需要给'a一个名字,因为我在其他地方使用了生命周期,实际代码比这个最小的例子要复杂一些。
【问题讨论】:
标签: rust borrow-checker