ownership closer rust look

13_rust的模块系统,Package、Crate,定义Module,路径(Path)

rust的模块系统 代码组织包括:哪些细节对外暴露,哪些细节私有,作用域哪些名称有效等。 rust的模块系统: 最上层 Package(包):Cargo的特性,构建、测试、共享crate。 第二层 Crate(单元包):一个模块树,可产生一个Library或可执行文件。 第三层Module(模块)、 ......
路径 模块 Package Module 系统

esp32笔记[8]-rust的定时器中断点灯

摘要 使用rust开发esp32c3实现定时器中断点亮led灯. 超链接 esp32笔记[7]-使用rust+zig开发入门 平台信息 esp32c3 rust Mutex锁 use core::cell::RefCell; use critical_section::Mutex;//no-std库 ......
定时器 笔记 rust esp 32

esp32笔记[7]-使用rust+zig开发入门

摘要 使用rust(no-std)+zig⚡️开发esp32c3入门,测试例程,实现rust调用zig中的加法函数并通过串口打印. 平台信息 esp32c3 rust zig esp32c3简介 [https://docs.espressif.com/projects/esp-idf/zh_CN/l ......
笔记 rust esp zig 32

Rust,linker but `link.exe` was not found

the msvc targets depend on the msvc linker but `link.exe` was not found 这是提示未安装vs studio c++组件,由于vsstudio组件较大,可以选择安装gnu的,具体如下: 命令行执行下边指令 rustup toolch ......
linker found Rust link but

rust笔记-变量

rust变量默认是不可变的,需要手动设置可变性。可变的变量给编程提供了灵活性,不可变的变量提供了安全性。而rust中需要根据实际场景来指定的变量类型。 变量声明 变量声明使用关键字 let,语法格式如下: let 变量名 = 值; 变量声明后,变量名可以被使用,但是值不能被修改。 这种方式申请的变量 ......
变量 笔记 rust

Rust: function

/** * file: nested.rs * * */ ///公有函数 pub fn function() { println!("called `my::nested::function()`"); } ///私有函数 #[allow(dead_code)] fn private_functio ......
function Rust

11_rust_枚举

枚举 枚举允许列举所有可能的值来定义一个类型。 定义枚举 enum Color { RED, BLUE, } fn main() { let red = Color::RED; // 定义一个枚举值 test_enum(red); test_enum(Color::BLUE); } fn test_ ......
rust 11

10_rust的结构体struct

rust的struct 定义和实例化struct 使用struct关键字,并对整个struct命名。 在花括号内,对所有字段(Field)定义名称和类型。 创建struct实例:为每个字段指定具体值,无需按声明顺序进行指定。 struct User { name: String, id: u64, ......
结构 struct rust 10

从内存使用角度的比较:Go vs Rust

Go和Rust是最近几年非常火的语言,经常有人问到底该怎么选择,特别是谁更适合搭建网络后台服务,哪一个性能更好,稳定性更高。 网络上Go和Rust的比较文章很多,大体上是做一个测试或写几段测试代码,根据运行的时长来比较哪个性能更好,但这种测试可能会陷入误区: 1)比来比去,比的是网络IO,因为这种测 ......
角度 内存 Rust vs

oso 基于rust 开发的授权框架

oso 基于rust 开发的授权框架,oso 与以前介绍的一些基于策略的授权框架类似,也是包含了策略定义,同时提供了主流开发语言的sdk,包含了自己的特点:(模型,策略,测试),oso对于测试处理开发了自己的 polar 语言 一些特性 支持多租户 支持rbac 支持过滤以及类似文件与文件夹管理的能 ......
框架 rust oso

13. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP中的压缩gzip,deflate,brotli算法

你知道HTTP中的压缩算法是如何工作的吗, 他们的压缩比又是多少, 能起到多少作用吗? 他的限制又是多少吗? 他存在的意义给我们带来了什么? ......
算法 wmproxy deflate brotli Rust

09_rust的切片

rust的切片 rust另一种不持有所有权的数据类型:切片(slice) 从一个例子开始:实现一个函数,输入一字符串,返回该字符串第一个单词,如果没空格,则返回整个字符串。 第一种实现,先返回找到的第一个空格的位置 fn main() { let s = String::from("hello wo ......
rust 09

rust防锁屏

use rsautogui::mouse; use std::thread::sleep; use std::time::Duration; fn main() { let timeseconds = Duration::from_secs(5); let mut x: u16; let y: u1 ......
rust

rust: function

///file: nestd.rs ///ide: RustRover 233.8264.22 /// /// /// /** *自定义函数 */ pub fn function() { println!("called `my::nested::function()`"); } #[allow(d ......
function rust

07_rust的引用和借用

rust的引用和借用 fn main() { let s1 = String::from("hello"); let len = test_func(&s1); println!("{} {}", s1, len); } fn test_func(s: &String) -> usize { s.l ......
rust 07

Rust 编译期嵌入指定目录下的所有文件

原理 通过宏实现,代码来自 macro-log: use proc_macro::TokenStream; use quote::quote; use syn::LitStr; pub fn read_dir(args: TokenStream) -> TokenStream { let path ......
文件 目录 Rust

07_rust的所有权

所有权 所有权是rust最独特、核心的特性,使得rust无GC也可保证内存安全。 其他语言都有在运行时管理自身内存的机制,比如GC,或者程序员手动申请和释放。 rust则采用了第三种方式:所有权 内存通过一所有权系统来管理,含一组编译时用于检测的规则。 当程序运行时,所有权不会影响程序速度。 sta ......
所有权 rust 07

06_rust的控制流表达式

控制流表达式 if表达式 if表达式用于根据条件执行不同代码分支,条件必须是bool类型。 if表达式中,与条件关联的代码块叫分支(arm)。 可选择是否加上else表达式。 fn main() { let num = 3; if num < 6 { println!("arm num < 6"); ......
表达式 rust 06

05_rust的函数、注释

rust的函数 声明函数使用fn关键字,针对函数和变量名,rust使用snake case命名规范,即所有字母小写,单词间用下划线分开。 fn main() { test_function(); } fn test_function() { println!("test func"); } rust ......
注释 函数 rust 05

Rust命令行解析程序:Clap

Rust命令行解析程序:Clap 基于Clap 4.4.6 参考资料:Clap官方手册 Chapter 1 配置解析器 使用Command结构体的new方法构建解析器: // arg.exe use clap::{arg, Command}; fn main() { // 只要调用clap解析命令行 ......
命令 程序 Rust Clap

11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查

健康检查维持着系统的稳定运行, 极大的加速着服务的响应时间, 并保证服务器不会把消息包转发到不能响应的服务器上, 从而使系统快速稳定的运转 ......
wmproxy Rust 11

04_rust的数据类型

数据类型 有 标量和复合类型 rust是静态编译语言,需在编译时知道所有变量的类型。 1)通常基于变量上下文使用的值,编译器能推断出具体类型。 2)若可能的类型存在多种,则需手动标注,如下例子。 let d: u32 = "56".parse().expect("not a num"); // 因为 ......
类型 数据 rust 04

微软开源 windows-drivers-rs,用 Rust 开发 Windows 驱动程序

Microsoft Azure 首席技术官兼著名 Windows 软件开发人员 Mark Russinovich 在社交平台上宣布,启动了一个名为 windows-drivers-rs 的新开源项目。 该项目可帮助开发人员使用 Rust 开发 Windows 驱动程序,旨在支持 WDM (Windo ......

Rust Clap库学习

Clap学习 本片内容主要参考clap的官方文档 在使用Rust的库之前, 首先需要添加clap库: cargo add clap --features derive 其他派生clap::_features - Rust (docs.rs) 运行这个命令行会在Cargo.toml中添加 clap = ......
Rust Clap

rust HashMap 排序

按照key和value升序、降序、自定义排序示例 use std::collections::HashMap; use std::cmp::Ordering; fn main() { let mut df = HashMap::new(); for x in 5..=12 { let k = for ......
HashMap rust

02_rust配置国内源

配置rust的国内源: linux下: vim ~/.cargo/config windows:c盘/用户/用户名/.cargo/config 如果没有config文件,创建一个即可。 增加源链接,在[source.crates-io]下增加replace-with = 'xxx' [source. ......
rust 02

Rust cargo常用命令

目录设置国内镜像创建新项目构建项目运行项目检查项目,但不构建可执行文件运行项目的测试发布项目更新依赖查看项目依赖关系树创建新的库项目文档生成 设置国内镜像 cd ~/.cargo # 创建config文件 vim config # 添加如下镜像源 [source.crates-io] registr ......
命令 常用 cargo Rust

Rust安装及学习资料

目录官网包管理Rust 程序设计语言通过例子学 Rust在线运行安装rustup升级Rust卸载Rust创建项目 官网 https://www.rust-lang.org/zh-CN/ 包管理 https://crates.io/ Rust 程序设计语言 https://kaisery.github ......
学习资料 资料 Rust

Rust Druid桌面应用框架

目录Github管方文档简介声明式 UI数据绑定高性能可扩展性跨平台事件处理生命周期管理社区支持添加依赖官方示例下载依赖并编译运行 Github https://github.com/linebender/druid 管方文档 https://docs.rs/druid/latest/druid/ ......
框架 桌面 Druid Rust

Rust actix-web框架

目录Github官方文档添加依赖官方示例下载依赖并编译运行 Github https://github.com/actix/actix-web 官方文档 https://actix.rs/docs/getting-started 添加依赖 [dependencies] actix-web = "4" ......
actix-web 框架 actix Rust web