Rust中的闭包
Posted aguncn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust中的闭包相关的知识,希望对你有一定的参考价值。
这个功能有点高级,
暂时理解不完全,
先把代码练正确吧。
use std::thread; use std::time::Duration; struct Cacher<T> where T: Fn(u32) -> u32 caculation: T, value: Option<u32>, impl<T> Cacher<T> where T: Fn(u32) -> u32 fn new(caculation: T) -> Cacher<T> Cacher caculation, value: None, fn value(&mut self, arg: u32) -> u32 match self.value Some(v) => v, None => let v = (self.caculation)(arg); self.value = Some(v); v , fn main() let simulated_user_specified_value = 6; let simulated_random_number = 30; generate_workout( simulated_user_specified_value, simulated_random_number ); fn generate_workout(intensity: u32, random_number: u32) let mut expensive_result = Cacher::new(|num| println!("calculating slowly..."); thread::sleep(Duration::from_secs(2)); num ); if intensity < 25 println!("Today, do pushups", expensive_result.value(intensity)); println!("Next, do situps!", expensive_result.value(intensity)); else if random_number == 3 println!("Take a break today! Remember to stay hydrated!"); else println!("Today, run for minutes!", expensive_result.value(intensity)); /* fn simulated_expensive_calculation(num: u32) -> u32 println!("calculating slowly..."); thread::sleep(Duration::from_secs(2)); num */
以上是关于Rust中的闭包的主要内容,如果未能解决你的问题,请参考以下文章
用 Rust 处理 WebAssembly 中的闭包而不是使用忘记和泄漏内存有啥更好的方法?