1、add、product属于闭包,作为变量值。而compute使用了闭包作为参数。
2、闭包和函数相似,有一个重要的区别,闭包可以捕获外部变量,而函数不行。

pub fn compute<MyFun:Fn(i32,i32)->i32>(op:MyFun,a:i32,b:i32)->i32{op(a,b)
}fn main() {let c=12;let add=|a:i32,b:i32|->i32{a+b+c};let product=|a:i32,b:i32|->i32{a*b*c} ;let d1=add(1,2);let d2=product(10,20);   let d3=compute(add,1, 2);println!("{:?}",d1);println!("{:?}",d2);println!("{:?}",d3);
}

运行结果如下:

    Finished dev [unoptimized + debuginfo] target(s) in 0.05sRunning `H:\learnrust\learnrs1\target\debug\learnrs1.exe`
15
2400
15------------------
(program exited with code: 0)请按任意键继续. . .

3、 pow_compute_impl作为闭包,作为返回值。

fn pow_compute_impl()->impl Fn(i32)->i32{move |i| i*i
}fn main() {println!("{:?}",d1);println!("{:?}",d2);println!("{:?}",d3);    println!("{:?}",myfun(8));
}
   Compiling learnrs1 v0.1.0 (H:\learnrust\learnrs1)Finished dev [unoptimized + debuginfo] target(s) in 0.74sRunning `H:\learnrust\learnrs1\target\debug\learnrs1.exe`
64------------------
(program exited with code: 0)请按任意键继续. .

.

rust(69)-闭包相关推荐

  1. Rust Closure 闭包解析(匿名函数)

    Rust Closure 闭包解析(匿名函数) 文章目录 Rust Closure 闭包解析(匿名函数) 正文 1. 简单闭包 - 纯粹的匿名函数 2. 捕获上下文 & FnOnce.FnMu ...

  2. rust(13)-闭包作为参数 trait泛型

    继续以解一元多次方程割线法为例 下面把闭包作为参数,定义trait泛型: 定义范型,规定该函数的com_fn参数只接受泛型F:Fn(f64)->f64 trait类型 pub fn f_comp ...

  3. rust(12)-闭包,闭包作为返回值,闭包作为参数

    继续以解一元多次方程割线法为例 use std::f64; pub fn get_next_x(com_fn:impl Fn(f64)->f64,x0:f64,x1:f64)->f64{l ...

  4. 17.Rust中函数式语言功能:迭代器与闭包

    Rust 的设计灵感来源于很多现存的语言和技术.其中一个显著的影响就是 函数式编程(functional programming).函数式编程风格通常包含将函数作为参数值或其他函数的返回值.将函数赋值 ...

  5. error[E0308]: Rust 闭包函数锁定参数类型

    Rust的闭包函数可以不写参数type,由编译器推断,并且在推断之后参数的type会被lock进该闭包函数中 如下代码会报错 let example_closure = |x| x; let s = ...

  6. 【Rust深入浅出-7】函数与闭包

    [Rust深入浅出-7]函数与闭包 第一章Hello World! 第二章 变量和基本数据类型 第三章 运算符 第四章 类型转换 第五章 拓展数据类型 第六章 控制流 第七章 函数与闭包 文章目录 [ ...

  7. 年前最后一项技能树 Rust ,攻碉堡 ing (Bilibili 视频整理)

    前言 我自己的语言语言学习树 最新的新闻 最近的新闻,Rust 审核团队,集体辞职抗议, 还是linux 社区的 linus 牛皮,镇得住场子不要慌,咱们是在linux 社区混的,影响不大,该学还是得 ...

  8. Programming Rust Fast, Safe Systems Development(译) 表达式(第六章 完)

    LISP programmers know the value of everything, but the cost of nothing. -Alan Perlis, epigram #55 在本 ...

  9. 现代编程语言(1):Rust (铁锈,一文掌握钢铁是怎样生锈的)

    五种我认为值得掌握的现代编程语言: C(竞品:Zig): Unix/Linux/基础库 等一大波老牌开源基础库和平台开发 JavaScript(升级:TypeScript):浏览器/NodeJS后端/ ...

最新文章

  1. python爬取电影评分_用Python爬取猫眼上的top100评分电影
  2. 只有程序员才能看懂的30张图,绝配!
  3. 使用AD5933测量元器件的谐振特性
  4. python四十七:在子类中调用父类方法
  5. jquery 按钮效果 正常、移上、按下
  6. Android 常用框架集合
  7. VIM-多文件-多窗口
  8. loadrunner11录制不成功解决方法(收集)
  9. d9900 修改ip 思科dcm_思科设备SSH登陆详细配置过程
  10. Delphi用ini文档实现界面无闪烁多语言转换
  11. 路由cpu负载过高检查
  12. 新DELL服务器在F2设置界面下raid的配置
  13. scala下使用akka计算圆周率pi
  14. 前端开发所需基本环境和软件配置
  15. 100以内的奇数求和
  16. 高通Android Q(android10)设置默认锁屏壁纸
  17. 网络学习笔记之路由器基本命令行操作
  18. 分享几个简单的HTML网页特效代码
  19. Thunderbird 邮件签名三个实现方式
  20. 「来道题」Redis的Gossip协议

热门文章

  1. 人脸情绪识别系统第一次迭代总结
  2. gem ransack(4000✨) 简单介绍
  3. mac PHP集成开发工具(PhpStorm)
  4. GDB调试汇编堆栈过程分析
  5. 博客园T恤PP泄漏版(附图)
  6. Lightweight Render Pipeline
  7. JavaScript -- 时光流逝(三):js中的 String 对象的方法
  8. NYOJ题目10505C?5S?
  9. 使用java spring开发ckeditor的文件上传功能(转)
  10. 两块 硬盘 主从盘跳线详解