首页 > 其他分享 >[记]Rust闭包加动态分发

[记]Rust闭包加动态分发

时间:2023-07-04 13:47:23浏览次数:42  
标签:Box 分发 闭包加 mut cc self fn new Rust

pub trait App {
    fn run(&mut self);
}
#[derive(Clone, Copy)]
pub struct Cda{
    d:i32,
}
impl Cda {
    fn new(num:i32)->Self{
        Self { d: num }
    }
    fn inc(&mut self)->Self{
        self.d+=1;
        *self
    }
    fn show(&self){
        println!("run:{}",self.d);
    }
}
impl App for Cda {
    fn run(&mut self) {
        self.inc().show();
    }
}
pub type AppCreator = Box<dyn FnMut(i32) -> Box<dyn App>>;
fn runapp(cc:&mut AppCreator){
    cc(22).run();
}
fn main(){
    let mut cc:AppCreator =Box::new(|cc|Box::new(Cda::new(cc)));
    runapp(&mut cc);
    runapp(&mut cc);
}

标签:Box,分发,闭包加,mut,cc,self,fn,new,Rust
From: https://www.cnblogs.com/hardfood/p/17525523.html

相关文章

  • rust入门(一)
    1、安装Rust无论使用何种系统,均可以根据Rust官方网站提供的rustup-init工具完成Rust的安装.rustup-init下载地址:  https://www.rust-lang.org/zh-CN/tools/install根据系统提示进行安装,安装完成后,验证是否安装成功rustc--version提示:如果你使用的是Linux......
  • Rust 入门
    0x01准备(1)安装Rust安装Rust:Windows系统在官网下载Rust版本检测:rustc--version查看文档:rustupdoc更新Rust:rustupupdate卸载Rust:rustupselfuninstall在Clion中使用Rust开发,环境配置指南链接(2)Hello,World!编写//filename:main.rsfnmain(){......
  • iOS分发证书过期或手动吊销,会影响App的下架吗?
    ​iOSdistribution发布证书过期或者被手动revoke了app会被下架吗? 在距离distribution证书过期一个月(或被手动revoke了)的时候会受到apple的邮件  ​编辑 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是company(公司)类型或个人类型的,只要你的每年99$的......
  • Rust async 关键字
    async观察代码:asyncfndd(a:i32)->i32{dbg!(a);2*a}异步方法内可以执行await,很显然上面的代码等价于下面两种形式:asyncfndd(a:i32)->i32{dbg!(a);async{2*a}.await}asyncfndd(a:i32)->i32{asyncmove{dbg!(a)......
  • iOS分发证书过期或手动吊销,会影响App的下架吗?
    ​iOSdistribution发布证书过期或者被手动revoke了app会被下架吗? 在距离distribution证书过期一个月(或被手动revoke了)的时候会受到apple的邮件​编辑 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是company(公司)类型或个人类型的,只要你的每年99$的开发者me......
  • 跨平台开源远程连接工具rustdesk
    rustdeskhttps://github.com/rustdesk/rustdeskhttps://gitee.com/mirrors/rustdesk......
  • .NETCore项目在Windows下构建Docker镜像并本地导出分发到CentOS系统下
    在Windows下使用Docker,我们选择DockerDesktop这个软件,非常方便。DockerDesktop介绍及安装DockerDesktop是适用于Mac、Linux或Windows环境的一键安装应用程序,使您能够构建和共享容器化应用程序和微服务。它提供了一个简单的GUI(图形用户界面),允许您直接从机器管理容器、应用程......
  • Rust 过程宏 proc-macro 是个啥
    定义一个proceduralmacro新建一个lib类型的crate:cargonewhello-macro--libproceduralmacros只能在proc-macro类型的crate内定义,所以需要修改Cargo.toml:[lib]proc-macro=true删除src/lib.rs里的全部内容,然后定义第一个过程宏(proceduralmacro):use......
  • Rust学习笔记——基于官网和Rust语言圣经(二、猜数游戏)
    前面的helloworld项目还是太oldschool了,这样用一个猜数字的游戏来快速了解下rust语言,以及为啥cargo那么好用的原因。不要拘束新的语法点,后面都会详细介绍!2.1猜数游戏:一次猜测-本节您将学会:·let、match等方法·相关的函数·外部的crate·...猜数游戏-目标-生成一个1到10......
  • pgcat 基于rust 开发类似pgbouncer 的数据库链接池以及proxy 工具
    pgcat是postgresml团队开源的,pg链接池以及proxy工具,包含了不少特性特性事物pool,类似pgbouncer,对于异常客户端以及遗弃事物处理做了提升sessionpool类似pgbouncer多线程运行时读查询负载均衡,对于primary以及replicas进行自动负载均衡故障转移,支持健康检查admin统计数据库,类......