rust(69)-闭包
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)-闭包相关推荐
- Rust Closure 闭包解析(匿名函数)
Rust Closure 闭包解析(匿名函数) 文章目录 Rust Closure 闭包解析(匿名函数) 正文 1. 简单闭包 - 纯粹的匿名函数 2. 捕获上下文 & FnOnce.FnMu ...
- rust(13)-闭包作为参数 trait泛型
继续以解一元多次方程割线法为例 下面把闭包作为参数,定义trait泛型: 定义范型,规定该函数的com_fn参数只接受泛型F:Fn(f64)->f64 trait类型 pub fn f_comp ...
- rust(12)-闭包,闭包作为返回值,闭包作为参数
继续以解一元多次方程割线法为例 use std::f64; pub fn get_next_x(com_fn:impl Fn(f64)->f64,x0:f64,x1:f64)->f64{l ...
- 17.Rust中函数式语言功能:迭代器与闭包
Rust 的设计灵感来源于很多现存的语言和技术.其中一个显著的影响就是 函数式编程(functional programming).函数式编程风格通常包含将函数作为参数值或其他函数的返回值.将函数赋值 ...
- error[E0308]: Rust 闭包函数锁定参数类型
Rust的闭包函数可以不写参数type,由编译器推断,并且在推断之后参数的type会被lock进该闭包函数中 如下代码会报错 let example_closure = |x| x; let s = ...
- 【Rust深入浅出-7】函数与闭包
[Rust深入浅出-7]函数与闭包 第一章Hello World! 第二章 变量和基本数据类型 第三章 运算符 第四章 类型转换 第五章 拓展数据类型 第六章 控制流 第七章 函数与闭包 文章目录 [ ...
- 年前最后一项技能树 Rust ,攻碉堡 ing (Bilibili 视频整理)
前言 我自己的语言语言学习树 最新的新闻 最近的新闻,Rust 审核团队,集体辞职抗议, 还是linux 社区的 linus 牛皮,镇得住场子不要慌,咱们是在linux 社区混的,影响不大,该学还是得 ...
- Programming Rust Fast, Safe Systems Development(译) 表达式(第六章 完)
LISP programmers know the value of everything, but the cost of nothing. -Alan Perlis, epigram #55 在本 ...
- 现代编程语言(1):Rust (铁锈,一文掌握钢铁是怎样生锈的)
五种我认为值得掌握的现代编程语言: C(竞品:Zig): Unix/Linux/基础库 等一大波老牌开源基础库和平台开发 JavaScript(升级:TypeScript):浏览器/NodeJS后端/ ...
最新文章
- python爬取电影评分_用Python爬取猫眼上的top100评分电影
- 只有程序员才能看懂的30张图,绝配!
- 使用AD5933测量元器件的谐振特性
- python四十七:在子类中调用父类方法
- jquery 按钮效果 正常、移上、按下
- Android 常用框架集合
- VIM-多文件-多窗口
- loadrunner11录制不成功解决方法(收集)
- d9900 修改ip 思科dcm_思科设备SSH登陆详细配置过程
- Delphi用ini文档实现界面无闪烁多语言转换
- 路由cpu负载过高检查
- 新DELL服务器在F2设置界面下raid的配置
- scala下使用akka计算圆周率pi
- 前端开发所需基本环境和软件配置
- 100以内的奇数求和
- 高通Android Q(android10)设置默认锁屏壁纸
- 网络学习笔记之路由器基本命令行操作
- 分享几个简单的HTML网页特效代码
- Thunderbird 邮件签名三个实现方式
- 「来道题」Redis的Gossip协议