rust
30_rust_模式匹配
模式匹配 模式:是rust中的一种特殊语法,用于匹配复杂和简单类型的结构。 将模式与匹配表达式和其他结构结合使用,可更好控制程序控制流。 模式由以下元素(及组合)组成: 字面值 解构的数组、enum、struct和tuple 变量 通配符 占位符 模式匹配的场景 match的Arm(分支) 格式: ......
Rust Tauri系列: 项目创建
创建 Rust - Tauri ## 创建rust Tauri项目 pnpm create tauri-app ->项目名称 test-app ->选择 TypeScript / JavaScript (pnpm, yarn, npm, bun) ->选择包管理工具(熟悉那个就用那个) ->选择 v ......
rust 运行windows cmd命令
use std::process::Command; fn callcmd(cmdstr: &str) { Command::new("cmd") .arg("/S") .arg("/c") .arg(cmdstr) .output() .expect("-1"); } fn main() { le ......
Spin 基于rust 开发的开源运行基于webassembly serverless 工具
spin 是基于rust 开发的,可以用来开发以及运行基于webassembly serverless 服务的工具 包含的特性 提供了周边扩展 默认wasm 只提供了基本类型的支持,wasm 提供了不少扩展可以方便的支持不同语言的调用(比如网络,数据库访问) 提供了快速应该开发的cli 提供了服务部 ......
30. 干货系列从零用Rust编写正反向代理,HTTP的组装之旅(中间件)
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 项目地址 国内: https://gitee. ......
0 Rust Overview (Rust概览)
Reasons for Learning Rust Rust is depicted as a systems programming language possessing the speed and control features akin to C or C++, while also em ......
29. 干货系列从零用Rust编写正反向代理,异步回调(async trait)的使用
回调赋予我们很好的函数处理能力,那么异步回调则是在异步编程中的灵魂,这是不可缺少的存在,本章主要是关于Rust中的trait的说明,希望对你有所帮助 ......
29_rust_面向对象编程特性
面向对象编程特性 面向对象的特性 封装 rust默认情况下是私有的,使用pub关键字让方法和成员公开,访问也通过方法来实现。 继承 使对象可沿用另外一些对象的数据和行为。不过rust没有继承的概念,但rust通过默认trait方法来进行代码共享,也可使用同名方法覆盖原有实现。 多态 rust使用泛型 ......
Rust错误案例:error[E0716]: temporary value dropped while borrowed
原因 出现error[E0716]: temporary value dropped while borrowed的情况往往是因为错误地将引用绑定在了临时变量上,在每行代码结尾的分号;处,临时变量释放导致引用的错误绑定。 由于临时变量多出现于函数编程中,因此该问题多发于连续调用函数。 简短案例 // ......
rust程序设计(6)枚举与模式匹配
rust中的枚举有什么用?枚举可以嵌入类型的好处是什么 你可以在同一个枚举中既有单个值,也有元组或结构体。 枚举的每个变体可以拥有不同数量和类型的关联数据。 这增加了类型的灵活性和表达力,使你能够更精确地建模你的数据。 我知道rust可以为枚举创建方法,那在哪种场景下枚举会比结构体会有优势 表示多个 ......
rust程序设计(5)结构体相关练习题| 附带解答
题目 基础结构体练习: 创建一个名为Person的结构体,包含name(字符串类型)和age(整数类型)两个字段。 写一个函数,接收一个Person实例作为参数,并打印出这个人的名字和年龄。 结构体方法练习: 为Person结构体添加一个方法birthday,当调用时,它将这个人的年龄增加1。 创建 ......
28_rust_无畏并发
无畏并发 Concurrent:程序不同部分之间独立执行; Parallel:程序不同部分同时运行。 rust无畏并发:允许编写没有细微Bug的代码。并在不引入新Bug的情况下易于重构。这里所说的“并发”泛指concurrent和parallel。 使用线程同时运行代码 1:1模型:实现线程的方式: ......
rust程序设计(4)关于 trait | impl 相关的概念和疑问
trait是什么? Rust中的trait是一种定义可被多种类型实现的共享行为的方式。它类似于Java或C#中的接口。通过trait,你可以定义一组方法签名(有时包括默认实现),不同的类型可以实现这些方法。这有助于抽象通用功能并确保不同类型间一定程度的一致性。 当一个类型实现了一个trait,它承诺 ......
Windows rustup update 速度慢,使用字节跳动Rust镜像加速
不设置镜像加速rustup 更新升级会非常慢 RsProxy 字节跳动的Rust 镜像 Windows想要使用这个镜像需要按照官方提示去设置两个系统变量 分别为 RUSTUP_DIST_SERVER RUSTUP_UPDATE_ROOT 之后来到当前用户文件夹下修改cargo的配置文件(没有就创建一 ......
28. 干货系列从零用Rust编写正反向代理,项目日志的源码实现
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 项目地址 国内: https://gitee.com/tic ......
esp32笔记[10]-rust驱动ssd1306显示屏
摘要 使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片. 平台信息 esp32(模组:ESP32-WROOM-32D) (xtensa lx6)(xtensa-esp32-none-elf) rust 超链接 esp32笔记[7]-使用rust ......
nginx-rust 基于rust 开发nginx 模块
nginx-rust 是nginx 官方出的可以让我们基于rust 开发nginx 模块,目前还处于早期阶段,对于nginx 类型的生成官方基于了bindgen工具这个工具我以前也简单介绍过,定于header 包装如下图 说明 目前来说官方提供的集成还是比较全的,同时对于标准nginx 模块开发需要 ......
27. 干货系列从零用Rust编写正反向代理,Rust中日志库的应用基础准备
日志在程序中的重要性非常的重要,当系统发生故障时,我们要随时能排查出相关的日志,细数日志在Rust中的定义依赖及其实现。 ......
rust程序设计(3)结构体相关概念和疑问
结构体 // 如何定义结构体 struct User { active: bool, username: String, email: String, sign_in_count: u64, } // 如何使用结构体 let user = User { active: true, username: ......
Pretty State Machine Patterns in Rust
Photo - Samuel Zeller Photo Pretty State Machine Patterns in Rust Ana, Hoverbear 🐻 Articles A computer scientist working in open source towards a mor ......
26. 干货系列从零用Rust编写正反向代理,如何发布Rust项目到Docker
Docker在服务端的应用中已经非常广泛,所以服务端项目支持Docker将是必不可少的存在,此篇讲述如何讲一个Rust项目发布到Docker的公共镜像里,以供他人使用 ......
rust 程序设计笔记(2)所有权 & 引用
所有权 数据存储在栈和堆上,存放在栈上的数据都是已知所占据空间的 突然的问题 // 内存中的栈是怎么存储数据的? 好的,想象一下你有一摞盘子。你只能从上面放盘子,也只能从上面拿盘子,这就是栈的工作方式。 在内存中,栈是用来存储数据的地方,它工作得就像这摞盘子。当你的程序运行一个函数时,这个函数的局部 ......
27_rust_智能指针
智能指针 智能指针是一种数据结构,其行为与指针类似,有额外的元数据和功能。 引用计数(reference counting)智能指针类型,通过记录所有者的数量,使一份数据被多个所有者同时持有,并在没任何所有者时自动清理数据。 其中引用只借用数据,而智能指针常拥有所指向的数据。如智能指针String ......
rust 程序设计笔记(1)
简介 - Rust 程序设计语言 简体中文版 hello world & rust相关工具使用 hello world rustc rustc --version complie .rs program main() entry point all blocks wrapped by { } car ......
25. 干货系列从零用Rust编写正反向代理,序列化之serde是如何工作的
序列化在程序中的应用必不可少的一环,从机读到人读,如JSON利于人读但不利于传输,如何将JSON映射成内存结构等,在日常的程序中必不可少的一环 ......
26_rust_cargo、crates.io
rust_cargo、crates.io 通过release profile自定义构建 release profile(发布配置):是预定义的,可自定义,可使用不用的配置,对代码编译拥有更多的控制。 每个profile的配置都独立于其它的profile。 cargo主要的两个profile: dev ......
24_rust_闭包
闭包 函数式编程的风格特点: 函数作为参数 函数作为其他函数的返回值 函数赋值给变量,之后再执行 rust语言也引入了很多函数式编程的语法特性。 闭包的概念 闭包(closure):可捕获其所在环境的匿名函数。 是匿名函数 能够保存为变量、作为参数和返回值 可在一个地方创建闭包,在另一个上下文中调用 ......
25_rust_迭代器
迭代器 什么是迭代器:迭代器模式是对一系列项执行某些任务,迭代器负责遍历每个项,确定序列(遍历)何时完成。 rust的迭代器: layzy(懒惰的):除非调用消费迭代器的方法,否则迭代器本身没任何效果。 fn main() { let v1 = vec![1, 2, 3]; let v1_iter ......
24. 从零用Rust编写正反向代理,细说HTTP行为中的几种定时器
当今互联网HTTP/HTTPS已经成为了不可缺少的一环,此次我们来细数基本是怎么样保持稳定的服务的,定时器又在其中起到了什么作用? ......