1.了解编译过程目前主流编译平台有,GNU、MSVC、LLVM。因为rustc调用了llvm,因此我们以LLVM为例,我们从C语言的编译过程聊,再对比Rust,看它们的编译过程有何差异。clang下载链接: https://releases.llvm.org/download.html# 保存编译过程中的临时文件 $ clang -save-temps ......
146
0
0
2024-05-07
❝生活的刁难,并不是要你变得气急败坏,而是要你变得更加从容 ❞大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。前言之前,我们在很多文章都提到过Rust Web框架。其中有一个Rust Web框架的出现频率都很高 -- 那就是axum[1]。并且在crate trend[2]的下载量来看axum也是遥遥领先。所以,我 ......
142
0
0
2024-05-05
场景开发过程宏时经常需要处理结构体或枚举体上的属性参数,如下 Command 结构体的 args 字段有属性 each = "arg",代码语言:rust复制#[derive(Builder)] pub struct Command { executable: String, #[builder(each = "arg")] ......
122
0
0
2024-04-27
简介pcap与libpcap可以理解为, pcap是一种文件格式(其实是一种接口格式),其名称来源于“抓包”(packet capture)而libpcap是 类Unix系统中的一个函数库, 可以解析和处理pcap格式的文件. Windows上有类似的实现(WinPcap,npcap)(pcap 是早期的网络抓包格式, 下一代抓包格式叫pcapng,二者可以 ......
139
0
0
2024-04-03
❝双脚是大地上飞翔的翅膀 ❞大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。从命令行工具到Web服务器,再到WebAssembly。囊括了很多东西,然后呢,今天我们来聊聊「用Rust写一个脚手架」。不知道,大家平时在开发中新启动一个项目是如何操作的。create-react-app构建一个react应用vue-cl ......
146
0
0
2024-03-29
上篇文章我们知道,Rust的Future是异步执行,await时是阻塞在当前的异步任务task上,直到完成。当多个异步任务执行时,如果只能都阻塞一个个执行,那就变成同步串行执行了,当然不是我们通常希望的并发处理方式,今天就来聊聊多个异步任务的一些并发处理方式。文章目录jointry_joinspawnselect顺序执行precondition分支修改can ......
127
0
0
2024-03-28
Rust的Future是用来实现异步编程的。今天我们围绕其了解下Rust的异步编程是如何构建。Rust用async就能轻松创建开销很小的可异步执行的函数,在await时其才会被调度执行。其比较轻量级,有别于异步多线程,依托在操作系统线程之上,构建大量并发则需要大量的线程资源,对资源的消耗比较大。比如下边用async构建异步任务:async fn async_ ......
159
0
0
2024-03-26
ipnet[1]这个第三方crate提供了处理 IPv4/IPv6 相关的实用方法使用ipnet ="2.9.0"版本创建网络地址并打印主机掩码和网络掩码use ipnet::{IpNet, Ipv4Net, Ipv6Net}; use std::net::{Ipv4Addr, Ipv6Addr}; use std::str::FromStr; f ......
144
0
0
2024-03-25
需要先安装protoc(Protocol Buffers Compiler),可据此Protobuf Compiler Installation[1]下载第一步:创建项目创建两个新的Rust项目,分别作为服务端与客户端:cargo new rust_grpc_server cargo new rust_grpc_client 分别在项目根目录创建pr ......
150
0
0
2024-03-24
Rust 中的Workspace是一种组织多个 Rust crate(项目或库)的结构。使得它们可以协同工作、共享依赖关系,以及更方便地进行管理和构建。如果你是Java开发者,workspace这个概念类似Java中的maven父工程。子工程可以共享父工程中的很多配置项,如依赖,版本等配置。子工程可以选择性的继承父工程的配置。一个workspace组织的项目 ......
151
0
0
2024-03-10
本篇是《Rust与AI》系列的第二篇,上一篇我们主要介绍了本系列的概览和方向,定下了一个基调。本篇我们将介绍LLM的基本架构,我们会以迄今为止使用最广泛的开源模型LLaMA为例展开介绍。LLM背景Rust 本身是不挑 AI 模型的,但是 LLM 是当下最热的方向,我们就从它开始吧,先了解一些非常基础的背景知识。TokenLLM 中非常重要的一个概念是 Tok ......
161
0
0
2024-03-08
为了防止整数溢出,开发人员通常使用checked_add、checked_sub、saturating_add、saturating_sub等函数,而不是简单的加法和减法(+、-)关于饱和减法saturating 是 使饱和之意饱和减法(Saturating Subtraction)是一种数学运算,常用于计算机编程中,特别是在处理固定大小的数值类型(如整数) ......
144
0
0
2024-03-02
之前提到的Mutex、Condvar是Rust中比较偏高层的共享数据型并发控制,更底层的并发控制也有,比如Atomic(原子操作)。今天结合代码来深入聊聊Atomic及其相关的Ordering文章目录Mutex vs AtomicAtomic 初探指令重排Ordering验证 Ordering 的可见性fence延迟加载首先为什么要有 Atomic,用 Mu ......
155
0
0
2024-02-29
平时使用 Python,JAVA 来写自动化。但是感觉性能上总是有点小不足。今天在极客时间上看到了一门讲 Rust 的课程,看到如下一段文字:掌握好 FFI,你就可以用 Rust 为你的 Python/JavaScript/Elixir/Swift 等主力语言在关键路径上提供更高的性能,也能很方便地引入 Rust 生态中特定的库。果断开始学习。在正式开始前, ......
156
0
0
2024-02-15
Rc 和 Weak 源码详解一个值需要被多个所有者拥有rust中所有权机制在图这种数据结构中,一个节点可能被多个其它节点所指向。那么如何表示图这种数据结构?在多线程中,多个线程可能会持有同一个数据?如何解决这个问题。Rcrust 通过使用引用计数智能指针 Rc 和 Arc 来解决上面的问题。当我们对一个被 Rc 所标识的数据进行 clone() 的时候,并不 ......
178
0
0
2024-01-31