草庐IT

rust-tokio

全部标签

Rust 切片与 Go 有何区别?

大家好,我是渔夫。今天,让我们一起深入学习Rust中的切片。在Rust编程语言中,除了常见的String类型,还有一种重要的字符串类型:str。这种类型通常被称为字符串切片(slice)。字符串切片可以理解为对一个字符串的部分或全部的引用。这意味着切片可以有任意长度,它的灵活性在某种程度上与Golang语言中的切片相似。当我们谈论切片的引用时,实际上我们是在引用一种特殊的指针,通常称为“胖指针”。这个指针不仅包含了对数据的引用,还包含了切片的长度信息。让我们通过下面的代码示例来具体分析这一概念,下面从 String 变量 s 创建了两个切片 s1 和 s2:fnmain(){lets=Stri

如何构建一个高性能的Web应用程序:Svelte前端和Rust后端

slvelte是一个流行的前端JavaScript框架,以其简单性和性能而闻名。另一方面,Rust是一种系统编程语言,以其内存安全性、速度和并发性而闻名。结合这两种技术可以产生强大而高效的web应用程序。在这篇文章中,我们将探索如何在前端使用slvelte,在后端使用Rust来创建一个web应用程序。设置后端设置web应用程序的第一步是创建后端。我们将使用Rust的Rocket框架创建一个RESTAPI,它将作为我们的slvelte应用程序的后端。创建一个Rust项目:cargonewrust-backend接下来,通过向Cargo.toml文件中添加Rocket框架到项目中:[depende

在 Rust 编程中使用泛型

1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义,这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法,还将讨论泛型如何影响代码性能。2.在函数定义中使用泛型当使用泛型定义函数时,本来在函数签名中指定参数和返回值的类型的地方,会改用泛型来表示。采用这种技术,使得代码适应性更强,从而为函数的调用者提供更多的功能,同时也避免了代码的重复。看下面的代码例子,定义了两个函数,功能都差不多,作用是分别寻找slice中最大的i32和slice中最大的char,只是数据类型不同。fnlargest_i32(list:&[i32])->&i32{le

rust angular 自签名证书 wss

项目中采用wss来建立的前后端连接,但是并没有用到认证的证书,所以自己用openssl生成了私钥,自签名证书来使用:这里就不再赘述Wss连接过程,直接上手操作:1.生成私钥,证书:请查看分类"开发工具"=>使用openssl安装和生成证书2.rust服务端:将生成的 server.crt和server.key放到  d:\\User\\Desktop\\wss\\openssl目录下依赖:[dependencies]rustls="0.19.0"tokio-rustls="0.22.0"tokio={version="1",features=["full"]}tokio-tungstenite

Rust真慢,差点跟同事打起来

就在2023年12月28,Rust发布团队有发布新的1.75.0版本。如果你还没有更新,只用该命令进行更新即可:rustupupdatestable接下来,我们来看都更新了那些新特性。1.Trait异步函数在Rust1.75支持在Trait中使用异步fn和->implTrait。但是,这个初始版本带有一些限制,不过也给出了这些限制将在未来的版本中取消。在trait中使用asyncfn:意思是这个特性允许在trait定义中使用异步函数(asyncfn),以前在Rust中是不可能的,导致trait在语言中有点像二等公民。然后,通过了这次版本更新,你完全可以在trait中定义异步函数,并在实现这些t

Rust 枚举和模式匹配

目录枚举的定义枚举值将数据直接放进每一个枚举成员将不同类型和数量的数据放入枚举成员有关联值的枚举和结构体的相似性使用impl在枚举上定义方法Option枚举和其相对于空值的优势match控制流结构绑定值的模式匹配Option匹配是穷尽的通配模式和_占位符iflet简洁控制流本文在原文基础上有删减,原文参考枚举和模式匹配。枚举的定义结构体可以将字段和数据聚合在一起,而枚举可以将一个值成为一个集合之一。定义一个IpAddrKind枚举:enumIpAddrKind{V4,V6,}枚举值创建IpAddrKind两个不同成员的实例:letfour=IpAddrKind::V4;letsix=IpAdd

39. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换

wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy项目设计目标利用正则替换的能力,能把指定的字符串替换成想要的字符串。正则库因为rust官方团队并未将正则正式的加入到std标准库里面,目前我们引用的是regex也是rust-lang官方出品的正则库

rust angular 自签名证书 wss

项目中采用wss来建立的前后端连接,但是并没有用到认证的证书,所以自己用openssl生成了私钥,自签名证书来使用:这里就不再赘述Wss连接过程,直接上手操作:1.生成私钥,证书:请查看分类"开发工具"=>使用openssl安装和生成证书2.rust服务端:将生成的 server.crt和server.key放到  d:\\User\\Desktop\\wss\\openssl目录下依赖:[dependencies]rustls="0.19.0"tokio-rustls="0.22.0"tokio={version="1",features=["full"]}tokio-tungstenite

39. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换

wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy项目设计目标利用正则替换的能力,能把指定的字符串替换成想要的字符串。正则库因为rust官方团队并未将正则正式的加入到std标准库里面,目前我们引用的是regex也是rust-lang官方出品的正则库

如何用Rust架构复杂系统?

本文经 Rust开发笔记授权转载,如需转载请至Rust开发笔记公众号申请授权。复杂系统具有多个组件和子系统,这些组件和子系统之间往往有高度的相互作用和依赖性。在设计这类系统时,一个主要的挑战是如何确保系统的可靠性、安全性和可维护性。Rust编程语言以其对安全性和性能的强调,成为构建复杂系统的一个理想选择。以下是利用Rust架构复杂系统的详细指南。系统设计原则分治法在Rust中,我们可以使用模块(modules)来划分系统的不同部分,每个模块负责一个子系统或者系统的一个方面。通过将系统分解成更小的、可管理的部分,可以使得系统更加清晰。示例:modnetwork;modstorage;modpro