刷新
Rust项目的代码组织

博主头像 学习一种编程语言时,常常优先关注在语言的语法和标准库上,希望能够尽快用上新语言来开发,我自己学习新的开发语言时也是这样。 不过,想用一种新的语言去开发实际的项目,或者自己做点小工具的话,除了语言本身之外,了解它在项目中如何组织代码也是至关重要的。毕竟在实际项目中,不可能像学习语言时那样,常常只有一个 ...

Rust中 String、str、&str、char 的区别

博主头像 先上结论 String 是动态分配在堆上的可变长度字符串类型。 str 是字符串切片类型,通常以 &str 的形式出现,用于引用字符串字面量或 String 的一部分。 &str 是字符串字面量的类型,以双引号创建,通常用于传递字符串数据的引用。 char 是单个 Unicode 字符类型,以单引号 ...

使用 Rust 语言编写 Java JNI 实现

博主头像 前言 Rust 语言是近几年来编程语言界的新秀之子,因其严格的内存安全保障机制而备受众多程序员的青睐与推崇。而 Rust 语言除了可用于编写独立运行的二进制程序以外,亦可用于编写动态链接库并被第三方程序动态加载调用。笔者趁 Rust 学习途中就动手借助 jni crate 从而使用 Rust 语言通 ...

Rust——猜谜游戏【二】

博主头像 前言 让我们一起动手完成一个项目,来快速上手 Rust!本章将介绍 Rust 中一些常用概念,并向您展示如何在实际项目中运用它们。您将会学到 let、match、方法、关联函数、引用外部 crate 等知识!后续章节会深入探讨这些概念的细节。 内容 我们会实现一个经典的新手编程问题:猜数字游戏。这是 ...

用Rust和Pingora轻松构建高效负载均衡器

博主头像 目录 什么是Pingora? 实现过程 初始化项目 编写负载均衡器代码 代码解析 部署 总结 1. 什么是Pingora? Pingora 是一个高性能的 Rust 库,用于构建可负载均衡器的代理服务器,它的诞生是为了弥补 Nginx 存在的缺陷。 Pingora 提供了丰富的功能和高度的扩展性,适 ...

用Rust实现单例

1. 使用Arc + Mutex 在这个例子中,我们使用了 Arc (原子引用计数)和 Mutex (互斥锁)来实现线程安全的单例。通过 get_instance 方法,我们可以获取到单例实例,并对实例进行操作。 use std::sync::{Arc, Mutex}; struct Singlet ...

使用pest创建rust的语法解析器

背景 最近有机会接触了pest,一个优雅的通过使用Parsing Expression Grammar or PEGs 来生成语法解析器,正好借助博客园这个平台,来分享一下自己的学习心得,也希望可以借助这个机会,和同行们互相切磋,互相提高。 什么是 Parsing Expression Gramma ...

Rust 实现日志记录功能

博主头像 目录log 日志库标准简单示例使用方法库的开发者应用开发者日志库开发者使用 log4rs添加依赖配置文件运行项目参考文章 log 日志库标准 log 是 Rust 的日志门面库,由官方积极维护可以放心使用。它是Rust的日志门面,相应的日志 API 已成为事实上的标准被其它日志框架所使用,有了日志门 ...

Rust使用Sauron实现Web界面交互

博主头像 目录简介架构Application 和组件简单入门示例先决条件创建项目编译库文件引用库文件运行项目界面交互示例创建项目编译库文件实现应用函数引用库文件运行项目参考资料 简介 Sauron 是一个多功能的 Web 框架和库,用于构建客户端和/或服务器端 Web 应用程序,重点关注人体工程学、简单性和优 ...

Rust Rocket简单入门

博主头像 目录简介hello world常用功能动态路径多个片段(segments)静态文件服务器简单WebAPI示例添加依赖实现接口接口测试参考链接 简介 Rust中最知名的两个web框架要数Rocket和Actix了,Rocket更注重易用性,Actix则更注重性能。这里只是了解一下Rust下的WebAP ...

Rust GUI库 egui 的简单应用

博主头像 目录简介简单示例创建项目界面设计切换主题自定义字体自定义图标经典布局定义导航变量实现导航界面实现导航逻辑实现主框架布局调试运行参考资料 简介 egui(发音为“e-gooey”)是一个简单、快速且高度可移植的 Rust 即时模式 GUI 库,跨平台、Rust原生,适合一些小工具和游戏引擎GUI: 文 ...

Rust 高级特征

博主头像 本文有删减,原文链接高级特征。 目录不安全 Rust不安全的超能力解引用裸指针调用不安全函数或方法创建不安全代码的安全抽象使用 extern 函数调用外部代码访问或修改可变静态变量实现不安全 trait访问联合体中的字段何时使用不安全代码高级 trait关联类型在 trait 定义中指定占位符类型默 ...

Rust 模式与模式匹配

博主头像 原文基础上有删减,原文链接 模式与模式匹配。 目录所有可能会用到模式的位置match 分支if let 条件表达式while let 条件循环for 循环let 语句函数参数Refutability(可反驳性): 模式是否会匹配失效所有的模式语法匹配字面值匹配命名变量多个模式通过 ..= 匹配值的范 ...

Rust 交叉编译 macOS 为 Linux 和 Windows

博主头像 目录前言环境案例macOS 编译为 Linux 和 Windows 可用二进制程序编译为 Linux 平台编译为Windows平台最后 前言 鉴于 rust 中文资料较少,遇到问题的解决方案更少。这里记录遇到的一些问题。 Rust 支持交叉编译,可以在 macOS 平台编译出 Linux 或者 Wi ...

Rust的Cow类型有什么用?详解Cow及其用途

博主头像 title: Rust的Cow类型有什么用?详解Cow及其用途 zhihu-url: https://zhuanlan.zhihu.com/p/684402569 Rust的智能指针有哪些?大多数人都能马上答出Box<T>、Rc<T>和Arc<T>和在异步编程中很常见的Pin<P>等等。不过,有一个 ...

Rust 的面向对象特性

博主头像 在原文上有删减,原文链接Rust 的面向对象特性。 目录面向对象语言的特征对象包含数据和行为封装隐藏了实现细节继承,作为类型系统与代码共享顾及不同类型值的 trait 对象定义通用行为的 trait实现 traittrait 对象执行动态分发面向对象设计模式的实现定义 Post 并新建一个草案状态的 ...

Rust的ToOwned特征:泛型版的Clone

博主头像 std::borrow::ToOwned是Rust标准库中的一个特征,用于从借用的数据中创建一个具有所有权的副本。它的作用和Clone是一样的,但是相比Clone,它支持泛型;也就是说我们可以将一个类型T“Clone”为另一个类型U。这对处理一些特殊的类型来说很有用。 ToOwned的签名 ToOw ...

Rust 无畏并发

博主头像 本文在原文基础上有删减,原文链接 无畏并发。 目录使用线程同时运行代码使用 spawn 创建新线程使用 join 等待所有线程结束将 move 闭包与线程一同使用使用消息传递在线程间传送数据信道与所有权转移发送多个值并观察接收者的等待通过克隆发送者来创建多个生产者共享状态并发互斥器一次只允许一个线程 ...