Rust
11_rust_枚举
枚举 枚举允许列举所有可能的值来定义一个类型。 定义枚举 enum Color { RED, BLUE, } fn main() { let red = Color::RED; // 定义一个枚举值 test_enum(red); test_enum(Color::BLUE); } fn test_ ......
10_rust的结构体struct
rust的struct 定义和实例化struct 使用struct关键字,并对整个struct命名。 在花括号内,对所有字段(Field)定义名称和类型。 创建struct实例:为每个字段指定具体值,无需按声明顺序进行指定。 struct User { name: String, id: u64, ......
从内存使用角度的比较:Go vs Rust
Go和Rust是最近几年非常火的语言,经常有人问到底该怎么选择,特别是谁更适合搭建网络后台服务,哪一个性能更好,稳定性更高。 网络上Go和Rust的比较文章很多,大体上是做一个测试或写几段测试代码,根据运行的时长来比较哪个性能更好,但这种测试可能会陷入误区: 1)比来比去,比的是网络IO,因为这种测 ......
oso 基于rust 开发的授权框架
oso 基于rust 开发的授权框架,oso 与以前介绍的一些基于策略的授权框架类似,也是包含了策略定义,同时提供了主流开发语言的sdk,包含了自己的特点:(模型,策略,测试),oso对于测试处理开发了自己的 polar 语言 一些特性 支持多租户 支持rbac 支持过滤以及类似文件与文件夹管理的能 ......
13. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP中的压缩gzip,deflate,brotli算法
你知道HTTP中的压缩算法是如何工作的吗, 他们的压缩比又是多少, 能起到多少作用吗? 他的限制又是多少吗? 他存在的意义给我们带来了什么? ......
09_rust的切片
rust的切片 rust另一种不持有所有权的数据类型:切片(slice) 从一个例子开始:实现一个函数,输入一字符串,返回该字符串第一个单词,如果没空格,则返回整个字符串。 第一种实现,先返回找到的第一个空格的位置 fn main() { let s = String::from("hello wo ......
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: function
///file: nestd.rs ///ide: RustRover 233.8264.22 /// /// /// /** *自定义函数 */ pub fn function() { println!("called `my::nested::function()`"); } #[allow(d ......
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 编译期嵌入指定目录下的所有文件
原理 通过宏实现,代码来自 macro-log: use proc_macro::TokenStream; use quote::quote; use syn::LitStr; pub fn read_dir(args: TokenStream) -> TokenStream { let path ......
07_rust的所有权
所有权 所有权是rust最独特、核心的特性,使得rust无GC也可保证内存安全。 其他语言都有在运行时管理自身内存的机制,比如GC,或者程序员手动申请和释放。 rust则采用了第三种方式:所有权 内存通过一所有权系统来管理,含一组编译时用于检测的规则。 当程序运行时,所有权不会影响程序速度。 sta ......
06_rust的控制流表达式
控制流表达式 if表达式 if表达式用于根据条件执行不同代码分支,条件必须是bool类型。 if表达式中,与条件关联的代码块叫分支(arm)。 可选择是否加上else表达式。 fn main() { let num = 3; if num < 6 { println!("arm num < 6"); ......
05_rust的函数、注释
rust的函数 声明函数使用fn关键字,针对函数和变量名,rust使用snake case命名规范,即所有字母小写,单词间用下划线分开。 fn main() { test_function(); } fn test_function() { println!("test func"); } rust ......
Rust命令行解析程序:Clap
Rust命令行解析程序:Clap 基于Clap 4.4.6 参考资料:Clap官方手册 Chapter 1 配置解析器 使用Command结构体的new方法构建解析器: // arg.exe use clap::{arg, Command}; fn main() { // 只要调用clap解析命令行 ......
11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查
健康检查维持着系统的稳定运行, 极大的加速着服务的响应时间, 并保证服务器不会把消息包转发到不能响应的服务器上, 从而使系统快速稳定的运转 ......
04_rust的数据类型
数据类型 有 标量和复合类型 rust是静态编译语言,需在编译时知道所有变量的类型。 1)通常基于变量上下文使用的值,编译器能推断出具体类型。 2)若可能的类型存在多种,则需手动标注,如下例子。 let d: u32 = "56".parse().expect("not a num"); // 因为 ......
微软开源 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 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 ......
02_rust配置国内源
配置rust的国内源: linux下: vim ~/.cargo/config windows:c盘/用户/用户名/.cargo/config 如果没有config文件,创建一个即可。 增加源链接,在[source.crates-io]下增加replace-with = 'xxx' [source. ......
Rust cargo常用命令
目录设置国内镜像创建新项目构建项目运行项目检查项目,但不构建可执行文件运行项目的测试发布项目更新依赖查看项目依赖关系树创建新的库项目文档生成 设置国内镜像 cd ~/.cargo # 创建config文件 vim config # 添加如下镜像源 [source.crates-io] registr ......
Rust安装及学习资料
目录官网包管理Rust 程序设计语言通过例子学 Rust在线运行安装rustup升级Rust卸载Rust创建项目 官网 https://www.rust-lang.org/zh-CN/ 包管理 https://crates.io/ Rust 程序设计语言 https://kaisery.github ......
Rust Druid桌面应用框架
目录Github管方文档简介声明式 UI数据绑定高性能可扩展性跨平台事件处理生命周期管理社区支持添加依赖官方示例下载依赖并编译运行 Github https://github.com/linebender/druid 管方文档 https://docs.rs/druid/latest/druid/ ......
Rust actix-web框架
目录Github官方文档添加依赖官方示例下载依赖并编译运行 Github https://github.com/actix/actix-web 官方文档 https://actix.rs/docs/getting-started 添加依赖 [dependencies] actix-web = "4" ......
8. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP改造篇之HPACK原理
用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP改造篇之HPACK原理 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https://github.com/tickbh/wmproxy HTTP/2的 ......
7. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP及TCP内网穿透原理及运行篇
用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP及TCP内网穿透原理及运行篇 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https://github.com/tickbh/wmproxy 内网、公 ......
在Jupyter中运行Rust(需要安装Minicconda、JupyterLab和Rust)
安装Miniconda 有许多不同的方法可以在一个方便我们工作的环境中启动和运行。我可以推荐的一种方法是安装和使用Miniconda。 Miniconda是一个免费的最小安装程序。它是 Anaconda 的一个小的引导版本,仅包含 conda、Python、它们所依赖的包,以及少量其他有用的包,包括 ......
6. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 通讯协议源码解读篇
用Rust手把手编写一个wmproxy(代理,内网穿透等), 通讯协议源码解读篇 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https://github.com/tickbh/wmproxy 事件模型的选取 OS线程, ......
A Minimal Rust Kernel
Feb 10, 2018 In this post, we create a minimal 64-bit Rust kernel for the x86 architecture. We build upon the freestanding Rust binary from the previo ......
5. 用Rust手把手编写一个Proxy(代理), 通讯协议建立, 为内网穿透做准备
wmproxy, 通讯协议的定义, 粘包拆包的解决方案, 代理的网络的拓扑图, 协议的分类, 消息的包头, 消息类型的定义 ......