Rust

nginx-rust 基于rust 开发nginx 模块

nginx-rust 是nginx 官方出的可以让我们基于rust 开发nginx 模块,目前还处于早期阶段,对于nginx 类型的生成官方基于了bindgen工具这个工具我以前也简单介绍过,定于header 包装如下图 说明 目前来说官方提供的集成还是比较全的,同时对于标准nginx 模块开发需要 ......
nginx rust nginx-rust 模块

27. 干货系列从零用Rust编写正反向代理,Rust中日志库的应用基础准备

日志在程序中的重要性非常的重要,当系统发生故障时,我们要随时能排查出相关的日志,细数日志在Rust中的定义依赖及其实现。 ......
干货 Rust 基础 日志 27

rust程序设计(3)结构体相关概念和疑问

结构体 // 如何定义结构体 struct User { active: bool, username: String, email: String, sign_in_count: u64, } // 如何使用结构体 let user = User { active: true, username: ......
程序设计 疑问 概念 结构 程序

Pretty State Machine Patterns in Rust

Photo - Samuel Zeller Photo Pretty State Machine Patterns in Rust Ana, Hoverbear 🐻 Articles A computer scientist working in open source towards a mor ......
Patterns Machine Pretty State Rust

26. 干货系列从零用Rust编写正反向代理,如何发布Rust项目到Docker

Docker在服务端的应用中已经非常广泛,所以服务端项目支持Docker将是必不可少的存在,此篇讲述如何讲一个Rust项目发布到Docker的公共镜像里,以供他人使用 ......
干货 Rust 项目 Docker 26

rust 程序设计笔记(2)所有权 & 引用

所有权 数据存储在栈和堆上,存放在栈上的数据都是已知所占据空间的 突然的问题 // 内存中的栈是怎么存储数据的? 好的,想象一下你有一摞盘子。你只能从上面放盘子,也只能从上面拿盘子,这就是栈的工作方式。 在内存中,栈是用来存储数据的地方,它工作得就像这摞盘子。当你的程序运行一个函数时,这个函数的局部 ......
程序设计 所有权 笔记 程序 rust

27_rust_智能指针

智能指针 智能指针是一种数据结构,其行为与指针类似,有额外的元数据和功能。 引用计数(reference counting)智能指针类型,通过记录所有者的数量,使一份数据被多个所有者同时持有,并在没任何所有者时自动清理数据。 其中引用只借用数据,而智能指针常拥有所指向的数据。如智能指针String ......
指针 智能 rust 27

rust 程序设计笔记(1)

简介 - Rust 程序设计语言 简体中文版 hello world & rust相关工具使用 hello world rustc rustc --version complie .rs program main() entry point all blocks wrapped by { } car ......
程序设计 笔记 程序 rust

25. 干货系列从零用Rust编写正反向代理,序列化之serde是如何工作的

序列化在程序中的应用必不可少的一环,从机读到人读,如JSON利于人读但不利于传输,如何将JSON映射成内存结构等,在日常的程序中必不可少的一环 ......
干货 序列 serde Rust 25

26_rust_cargo、crates.io

rust_cargo、crates.io 通过release profile自定义构建 release profile(发布配置):是预定义的,可自定义,可使用不用的配置,对代码编译拥有更多的控制。 每个profile的配置都独立于其它的profile。 cargo主要的两个profile: dev ......
rust_cargo crates cargo rust 26

24_rust_闭包

闭包 函数式编程的风格特点: 函数作为参数 函数作为其他函数的返回值 函数赋值给变量,之后再执行 rust语言也引入了很多函数式编程的语法特性。 闭包的概念 闭包(closure):可捕获其所在环境的匿名函数。 是匿名函数 能够保存为变量、作为参数和返回值 可在一个地方创建闭包,在另一个上下文中调用 ......
闭包 rust 24

25_rust_迭代器

迭代器 什么是迭代器:迭代器模式是对一系列项执行某些任务,迭代器负责遍历每个项,确定序列(遍历)何时完成。 rust的迭代器: layzy(懒惰的):除非调用消费迭代器的方法,否则迭代器本身没任何效果。 fn main() { let v1 = vec![1, 2, 3]; let v1_iter ......
rust 25

24. 从零用Rust编写正反向代理,细说HTTP行为中的几种定时器

当今互联网HTTP/HTTPS已经成为了不可缺少的一环,此次我们来细数基本是怎么样保持稳定的服务的,定时器又在其中起到了什么作用? ......
定时器 行为 Rust HTTP 24

Rust 在可执行文件中嵌入代码版本信息

缘起 我想要最终编译出的可执行文件中包含代码仓库的版本信息 fn main() { println!("Hello RustHub"); // git rev-parse --short HEAD let commit_hash = "6c1b45f"; println!("commit_hash: ......
版本 代码 文件 信息 Rust

23. 从零用Rust编写正反向代理,流控小姐姐的温柔一刀!

讲述了一个流控小姐姐是怎么把流量控制管理到位,保证互联网的高速公路不会发生拥堵,从而快速的进行数据通行。wmproxy已用Rust正反向代理。 ......
姐姐 Rust 23

23_rust_练习

练习编码 实现一个简单的grep工具。 建立项目: > cargo new minigrep Created binary (application) `minigrep` package 接收命令行参数 use std::env; fn main() { // args返回一迭代器,collect ......
rust 23

[Rust] 对整形溢出的处理

1. 两种不同模式下的整形溢出 坑了个爹的,书上说的没理解清楚,在Rust程序语言设计中文版3.2中提到了,当使用--release参数进行发布模式构建时,Rust不会检测导致panic的整形溢出,这里需要分两种情况考虑: 编译期就可以发现的整形溢出 程序运行过程中会发生的整形溢出 1.1 编译阶段 ......
Rust

前端开发笔记[5]-rust的webassembly

摘要 基于rust开发webassembly入门,通过rust实现在网页中弹出警告框. rust的webassembly开发方式 https://zhuanlan.zhihu.com/p/104299612 入门 Rust 开发 WebAssembly Rust 编译为WebAssembly 在前端 ......
前端 webassembly 笔记 rust

不可靠的 Rust Lifetime Elision

众所周知,Rust 编译器在分析代码的过程中,会对含有引用参数、返回值的函数、方法进行 lifetime 检查。经历数次版本迭代后 Rust 编译器发展出了一套惯用规则用于隐式推理 lifetime 注解 (lifetime elision),从而减小开发者的编写难度,尽可能省略不必要的 lifet ......
Lifetime Elision Rust

与c++比较学习rust3-2:数据类型

rust 的文章在 数据类型 数据类型 标量类型 整形,浮点型,布尔型,字符 整形 c++ rust go int8_t i8 int8 int16_t i16 int16 int32_t i32 int32 int64_t i64 int64 - i128 - int isize int unsi ......
类型 数据 rust3 rust

与c++比较学习rust3-1:变量和可变性

rust 文章: 变量和可变性 let , const 这两个在c++中,没有与let相同的 用法, let let有点像 const auto 1.1. 相同点:不需要指定类型。使用了const auto 之后,不能改变值也不能改变类型。 1.2. 不同点:rust合法, c++中不合法(即c++ ......
可变性 变量 rust3 rust

rust 指针

指针 deref()方法是将一个智能指针转换为底层数据类型的引用。 fn main() { let a = vec![1, 2, 3]; a.iter().for_each(|f| println!("{}", f)); // deref 方法是将一个智能指针转换为底层数据类型的引用。 let b ......
指针 rust

rust 集合当成智能指针

集合当成智能指针 通过为集合实现 Deref trait,提供其拥有和借用的数据视图。 Vec是一个拥有T的集合,然后通过实现Deref完成&Vec到&[T]的隐式解引用,从而提供借用T的集合(即&[T]) #[stable(feature = "rust1", since = "1.0.0")] ......
指针 智能 rust

rust 使用借用类型作为参数

使用借用类型作为参数 编码时应该总是倾向于使用借用类型而不是借用所有类型。 对于String类型来说,应该倾向于使用使用&str,而不是&String; #[allow(unused)] fn main() { let string: String = "hello".to_string(); le ......
参数 类型 rust

rust 析构器中做最终处理

析构器中做最终处理 Rust中,通常在析构函数中运行退出前必须运行的代码。 #[derive(Debug)] pub struct A(u8); impl Drop for A { fn drop(&mut self) { println!("A exit") } } #[derive(Debug) ......
rust

rust 构造器和默认构造器

构造器和默认构造器 Rust中,通常使用一个关联函数new来创建一个对象,通过Default trait来支持默认构造器。 // #[derive(Default)]来实现Default,而不必显式的实现。 #[derive(Default)] pub struct Person { name: S ......
rust

rust 使用 take 和 replace 来保留所有值

使用 take 和 replace 来保留所有值 枚举类型 enum MyEnum { A { name: String, x: u32 }, B { name: String }, } 使用 std::mem::take() 和 std::mem::replace() 在不克隆 name 的情况下 ......
replace rust take

rust PBFT

PBFT(Practical Byzantine Fault Tolerance) PBFT(Practical Byzantine Fault Tolerance)算法是一种分布式共识算法,旨在解决拜占庭将军问题(Byzantine Generals Problem)。拜占庭将军问题是指在分布式系 ......
rust PBFT

rust Unsurprising

Unsurprising(不意外) 最少意外原则 接口应尽可能直观(可预测,用户能猜对) 至少应该不让人感到惊奇 核心思想 贴近用户已经知道的东西(不必重学概念) 让接口可测试 命名实践 实现常用的 Traits 人体工程学(Ergonomic)Traits 包装类型(Wrapper Type) 命 ......
Unsurprising rust

Rust 结构体的方法描述

Rust 结构体的方法描述 原文地址:https://rustwiki.org/zh-CN/rust-by-example/fn/methods.html Rust 的 方法(method)是依附于对象的函数。这些方法通过关键字 self 来访问对象中的数据和其他。方法在 impl 代码块中定义。 ......
结构 方法 Rust