Fn是啥,普通的一款fn test<T>(f: T) where T: Fn() { f(); } let s = String::from("66"); let f = || {println!("{}", s);}; test(f);
这种就可以了
如果f里发生了s.push_str(“7”)
那么明显 这个时候发生了MUT!
只需要把Fn改成FnMut文章来源:https://www.toymoban.com/news/detail-707436.html
另外一个操作是Oncefn test<T>(f: T)where T: FnOnce() { f(); }
如果执行test(f)这里会发生move,把f直接move了,Once的意思就清晰了,你既然已经move进去test里了,那么test结束的时候 f 就不复存在了,所以就只能一次,就Once了文章来源地址https://www.toymoban.com/news/detail-707436.html
到了这里,关于rust持续学习 Fn FnMut FnOnce的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!