草庐IT

rust-tokio

全部标签

Rust 所有权和 Move 语义

Rust所有权和Move语义所有权和生命周期是Rust和其它编程语言的主要区别,也是Rust其它知识点的基础。动态数组因为大小在编译期无法确定,所以放在堆上,并且在栈上有一个包含了长度和容量的胖指针指向堆上的内存。恰到好处的限制,反而会释放无穷的创意和生产力。Rust所有权规则一个值只能被一个变量所拥有,这个变量被称为所有者。一个值同一时刻只能有一个所有者,也就是说不能有两个变量拥有相同的值。所以对应变量赋值、参数传递、函数返回等行为,旧的所有者会把值的所有权转移给新的所有者,以便保证单一所有者的约束。当所有者离开作用域,其拥有的值被丢弃,内存得到释放。这三条规则很好理解,核心就是保证单一所有

Rust 错误处理(上)

目录1、用panic!处理不可恢复的错误对应panic时的栈展开或终止1.1 使用panic!的backtrace2、用Result处理可恢复的错误2.1 匹配不同的错误 2.2 失败时panic的简写:unwrap和expect2.3 传播错误错误是软件中不可否认的事实,所以Rust有一些处理出错情况的特性。在许多情况下,Rust要求你承认错误的可能性,并在你的代码编译前采取一些行动。这一要求使你的程序更加健壮,因为它可以确保你在将代码部署到生产环境之前就能发现错误并进行适当的处理。Rust将错误分为两大类:可恢复的(recoverable)和 不可恢复的(unrecoverable)错误。

【vs code】|——rust开发环境搭建

文章目录前言1.在windows上安装rust2.在vscode上安装rust相关插件rust-analyzerRustSyntaxRustTestLens还有其他插件都可安装哦3.创建一个rust项目并运行前言vscode下搭建rust语言开发环境1.在windows上安装rust参考官方安装教程:https://www.rust-lang.org/tools/install我们通过快速方式rustup安装Tips:rust依赖C/C++环境在安装rust前需要先安装C/C++编译环境有两种:1、msvcVisualStudio使用的是msvc这个安装rust一路默认即可2、mingw大家自

OpenHarmony 4.0的 Rust 开发

想了解更多关于开源的内容,请访问:51CTO鸿蒙开发者社区https://ost.51cto.com背景Rust是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust官方也使用Cargo工具来专门为Rust代码创建工程和构建编译。OpenHarmony为了集成C/C++代码和提升编译速度,使用了GN+Ninja的编译构建系统。GN的构建语言简洁易读,Ninja的汇编级编译规则直接高效。为了在OpenHarmony中集成Rust代码,并最大程度发挥Rust和OpenHarmony中原有C/C++代码的交互性,采用GN作为统一构建工具,即通过GN构建Rust

Rust 常见集合

目录使用Vector储存列表新建vectorVec::new函数(无初值)vec!宏(有初值)更新vector读取vector的元素注意可变和不可变引用遍历vector中的元素使用枚举来储存多种类型丢弃vector时也会丢弃其所有元素使用字符串储存UTF-8编码的文本什么是字符串?新建字符串更新字符串使用push_str和push附加字符串使用+运算符或format!宏拼接字符串索引字符串内部表现字节、标量值和字形簇字符串slice遍历字符串的方法字符串并不简单使用HashMap储存键值对新建一个哈希map访问哈希map中的值哈希map和所有权更新哈希map覆盖一个值只在键没有对应值时插入键值

Rust 常见集合

目录使用Vector储存列表新建vectorVec::new函数(无初值)vec!宏(有初值)更新vector读取vector的元素注意可变和不可变引用遍历vector中的元素使用枚举来储存多种类型丢弃vector时也会丢弃其所有元素使用字符串储存UTF-8编码的文本什么是字符串?新建字符串更新字符串使用push_str和push附加字符串使用+运算符或format!宏拼接字符串索引字符串内部表现字节、标量值和字形簇字符串slice遍历字符串的方法字符串并不简单使用HashMap储存键值对新建一个哈希map访问哈希map中的值哈希map和所有权更新哈希map覆盖一个值只在键没有对应值时插入键值

使用 Rust 后,我写 Go 的方法都变了!

大家好,我是渔夫。今天跟大家分享,当使用Rust一段时间后回来写Go的有哪些变化。自己本身大部分工作上都是主要写Go的,因为项目原因,以及我自己本身对Rust的热爱,业余时间也喜欢写各种小工具等等,所以,也越来越习惯Rust的写法。错误处理以为我摆脱了iferr!=nil{},在Rust中,很有可能会写出类似 letresult=some_function(),然后使用 match 或 ? 操作符来处理 Result。习惯使用Rust的写法使用?,模式匹配来处理错误情况,用起来还是有点舒服滴。letresult=some_function()?;而Go呢,使用多返回值来处理错误,通常是返回一个

42 干货系列从零用Rust编写负载均衡及代理,wmproxy中配置tcp转websocket

wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy设计目标通过简单配置方便用户快速使用tcp转websocket及websocket转tcp,也可支持http升级到websocket协议。改造http升级websocket因为负载均衡的不确定性,在

42 干货系列从零用Rust编写负载均衡及代理,wmproxy中配置tcp转websocket

wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy设计目标通过简单配置方便用户快速使用tcp转websocket及websocket转tcp,也可支持http升级到websocket协议。改造http升级websocket因为负载均衡的不确定性,在

Rust 最新版1.75.0升级记

升级方法稳定版当前版本号1.70.0升级稳定版,需要用上参数 stableC:\>rustupupdatestableinfo:syncingchannelupdatesfor'stable-x86_64-pc-windows-msvc'info:latestupdateon2023-12-28,rustversion1.75.0(82e1608df2023-12-21)info:downloadingcomponent'cargo' 5.9MiB/ 5.9MiB(100%) 3.7MiB/sin 1sETA: 0sinfo:downloadingcomponent'clippy'info:d