草庐IT

tonic-Rust

全部标签

Rust基础08-模式匹配

模式匹配控制流运算符——match:其允许一个值与一系列模式进行匹配,并执行匹配的模式对应的代码这些模式可以是字面值、变量名、通配符...绑定值的模式:匹配的分支可以绑定到被匹配对象的部分值因此,可以从enum变体中提取值//绑定值#[derive(Debug)]enumUsState{Alabama,Alaska,}enumCoin{Penny,Nickel,Dime,Quarter(UsState),}fnvalue_in_cents(coin:Coin)->u8{matchcoin{Coin::Penny=>{println!("Penny");1}Coin::Nickel=>5,Coi

rust中的超时处理

自从tokio1.0发布以来,rust的异步开发总算大势已定。尽管没达到标准库的速度,依然挡不住大家的热情。看编程排行榜,增加2倍的开发者。既生瑜何生亮,感觉go就是小号的rust。 不废话了。背景:之前用go开发一个边缘网关的小东东,业余时间做了一大半。后来学了rust,打算练手,用rust重新写。在crate中央仓库里找来找去,选择了tokio-modbus。测试中发现用rtu的方式下,如果slave没有发回数据,程序将陷入无限等待中。也没找到如何设置这个超时。串口配置中倒是有个超时设置,不知道有啥用。在tokio-modbus的github上,找到有人提到这个问题。那个解决问题的方式实在

rust中的超时处理

自从tokio1.0发布以来,rust的异步开发总算大势已定。尽管没达到标准库的速度,依然挡不住大家的热情。看编程排行榜,增加2倍的开发者。既生瑜何生亮,感觉go就是小号的rust。 不废话了。背景:之前用go开发一个边缘网关的小东东,业余时间做了一大半。后来学了rust,打算练手,用rust重新写。在crate中央仓库里找来找去,选择了tokio-modbus。测试中发现用rtu的方式下,如果slave没有发回数据,程序将陷入无限等待中。也没找到如何设置这个超时。串口配置中倒是有个超时设置,不知道有啥用。在tokio-modbus的github上,找到有人提到这个问题。那个解决问题的方式实在

最强肉坦:RUST多线程

Rust最近非常火,作为coder要早学早享受。本篇作为该博客第一篇学习Rust语言的文章,将通过一个在其他语言都比较常见的例子作为线索,引出Rust的一些重要理念或者说特性。这些特性都是令人心驰神往的,相信我,当你读到最后,一定会有同样的感觉(除非你是天选之子,从未受过语言的苦^^)。本文题目之所以使用“最强肉坦”来形容Rust,就是为了凸显该语言的一种防御能力,是让人很放心的存在。关键字:Rust,变量,所有权,不可变性,无畏并发,闭包,多线程,智能指针问题:多线程修改共享变量这是几乎每种编程语言都会遇到的实现场景,通过对比Java和Rust的实现与运行表现,我们可以清晰地看出Rust的不

最强肉坦:RUST多线程

Rust最近非常火,作为coder要早学早享受。本篇作为该博客第一篇学习Rust语言的文章,将通过一个在其他语言都比较常见的例子作为线索,引出Rust的一些重要理念或者说特性。这些特性都是令人心驰神往的,相信我,当你读到最后,一定会有同样的感觉(除非你是天选之子,从未受过语言的苦^^)。本文题目之所以使用“最强肉坦”来形容Rust,就是为了凸显该语言的一种防御能力,是让人很放心的存在。关键字:Rust,变量,所有权,不可变性,无畏并发,闭包,多线程,智能指针问题:多线程修改共享变量这是几乎每种编程语言都会遇到的实现场景,通过对比Java和Rust的实现与运行表现,我们可以清晰地看出Rust的不

rust库学习-env_logger

介绍env_logger配合log库使用,log是rust日志库的外观库,给日志库提供抽象的记录接口,log使用宏,如info!()trace!()记录日志假如需要替换当前使用的日志库,只需将初始化相关的代码和toml文件修改env_logger通过配置环境变量中RUST_LOG实现日志过滤env_logger库不合适要写入文件的日志,不能直接输出到文件和日志轮换(rotating),默认输出到stderr,可以切换stdout,还有自定义输出(Pipe(Box))实践Cargo.toml[dependencies]log="0.4"env_logger="0.9"main.rsusestd:

rust库学习-env_logger

介绍env_logger配合log库使用,log是rust日志库的外观库,给日志库提供抽象的记录接口,log使用宏,如info!()trace!()记录日志假如需要替换当前使用的日志库,只需将初始化相关的代码和toml文件修改env_logger通过配置环境变量中RUST_LOG实现日志过滤env_logger库不合适要写入文件的日志,不能直接输出到文件和日志轮换(rotating),默认输出到stderr,可以切换stdout,还有自定义输出(Pipe(Box))实践Cargo.toml[dependencies]log="0.4"env_logger="0.9"main.rsusestd:

Rust所有权和借用规则示例

众所周知,所有权是Rust区别于其他语言的一大特色,只要代码满足了所有权规则,我们就不用担心内存的泄露的问题。让代码在编译阶段就解决内存的问题,而不是在运行崩溃后再调试。Rust中,所有权和借用的规则其实并不复杂,所有权有3条规则,借用只有2条规则。所有权的规则1.Rust中的每一个值都有一个对应的变量作为它的所有者这个规则很好理解,比如下面的2个值5和hello分别属于变量x和yfnmain(){letx=5;lety=String::from("hello");println!("x={},andy={}",x,y);}2.在同一时间内,值有且仅有一个所有者比如下面的示例,当x的值给了y之

Rust所有权和借用规则示例

众所周知,所有权是Rust区别于其他语言的一大特色,只要代码满足了所有权规则,我们就不用担心内存的泄露的问题。让代码在编译阶段就解决内存的问题,而不是在运行崩溃后再调试。Rust中,所有权和借用的规则其实并不复杂,所有权有3条规则,借用只有2条规则。所有权的规则1.Rust中的每一个值都有一个对应的变量作为它的所有者这个规则很好理解,比如下面的2个值5和hello分别属于变量x和yfnmain(){letx=5;lety=String::from("hello");println!("x={},andy={}",x,y);}2.在同一时间内,值有且仅有一个所有者比如下面的示例,当x的值给了y之

性能的极致,Rust的加持,Zed-Dev编辑器快速搭建Python3.10开发环境

快就一个字,甚至比以快著称于世的Sublime4编辑器都快,这就是Zed.dev编辑器。其底层由Rust编写,比基于Electron技术微软开源的编辑器VSCode快一倍有余,性能上无出其右,同时支持多人编辑代码。安装和配置Zed.devZed.dev编辑器还在灰度测试阶段,暂时只释出了Mac版本,在Zed.dev官网下载,安装成功后,进入Zed.dev编辑器,使用组合键Command+,调出编辑器的配置文件://Zedsettings////ForinformationonhowtoconfigureZed,seetheZed//documentation:https://zed.dev/d