Rust sometimes needs manual type annotation
Posted 金庆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust sometimes needs manual type annotation相关的知识,希望对你有一定的参考价值。
Rust sometimes needs manual type annotation
(Jin Qing’s Column, Apr., 2022)
This code compiles error:
trait MyCallback: FnMut(&u32) -> ()
impl<F: FnMut(&u32) -> ()> MyCallback for F
fn process_data(mut f: impl MyCallback) -> ()
f(&0)
fn process_data_2(mut f: impl FnMut(&u32) -> ()) -> ()
f(&0)
fn main()
// Doesn't compile
process_data(|_| ());
// Compiles
process_data_2(|_| ());
expected type `for<'r> FnMut<(&'r u32,)>`
found type `FnMut<(&u32,)>`
Fix:
process_data(|_: &_| ());
See: https://stackoverflow.com/questions/61671460/rust-type-mismatch-resolving-forr-with-closure-trait-alias-argument
Also see: https://github.com/rust-lang/rust/issues/58639
Sometimes, Rust needs a type annotation in closure.
以上是关于Rust sometimes needs manual type annotation的主要内容,如果未能解决你的问题,请参考以下文章
Rust sometimes needs manual type annotation
Sometimes you just need a straight SWITCH
如何在limits.conf中为CAP_IPC_OWNER添加Linux功能?
jQuery ajax 在 Chrome 和 Safari 中失败 *sometimes* (ERR_EMPTY_RESPONSE)