“ 学习资料:rust in action[1] 1. Rust 安装 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source"$HOME/.cargo/env" 2. hello world 创建 hello 项目 mkdir rust_tmp && cd rust_tmp cargo new hello cd hello cargo run 看
前言 本文以Windows VSCode + WSL搭建为例。 搭建步骤 1、安装WSL。 2、在WSL中安装c/c++编译环境(Rust依赖gcc): apt install build-essential 运行此命令会自动安装gcc,g++,make等工具。 3、在WSL中安装Rust编译工具。在WSL的shell终端运行如下命令,接着按照提示操作即可: curl --pr
Installation 安装 Linux 或者macOS 执行命令: $ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh 这个命令会下载安装脚本工具,并且会安装最新稳定版本的Rust,你有可能需要输入你的密码。如果安装成功就会显示: Rust is installed now. Great! 你需要一个链接器(l
(val1 - val2).abs() < f64::EPSILON val1.to_ne_bytes() == val2.to_ne_bytes() 或者 val1.to_bits() == val2.to_bits()
泛型 什么是泛型,泛型的作用,泛型的优势等本文不做介绍,本文只将泛型在 Rust 当中的使用方法. 泛型方法 一个比较两个数大小的并返回其中较大的一个数: fn larget<T: std::cmp::PartialOrd>(a: T, b: T) -> T { if a >= b { a } else { b } } 泛型
一、变量的可变性 最基本的赋值 : let mut 变量名称:变量类型 = 变量值 ; a> let x=5;x=6; (×) let mut x=5; x=6;(√) b> const 常量赋值 ; const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;//跟 c# 中的用法一样
变量用法与特征 变量绑定 let a = "hello world" 为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确)?这里就涉及 Rust 最核心的原则——所有权,简单来讲,任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量
一个简单的需求:读入一个目录内的所有文本文件,每个文件的格式都是每一行定义一个二维点,例如x=1,y=2;获取所有点的一个列表。这里不使用serde或者现成的parser库,这么简单的格式直接手写就行了 没有错误处理 先来一个糙快猛的版本。其中用了一个nightly feature str_split_once,不过
有两种方式解决: 第一种方式: 打开vode的设置界面搜索: typeHints 和 parameterHints ,并设置为 disable 第二种方式: 直接打卡vscode的配置文件 /C:/Users/your_user_name/AppData/Roaming/Code/User/settings.json: 并添加: "rust-analyzer.inlayHints.typeHints.enable": false, "ru
环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 一般编程语言会使用二叉搜索树(BST)来实现有序 Map 和 Set,而 Rust 选择了 B-树。 目标 了解使用 B-树实现有序
基本类型 当一门语言不谈类型时,你得小心,这大概率是动态语言(别拍我,我承认是废话)。但是把类型大张旗鼓的用多个章节去讲的,Rust 是其中之一。 基本类型是程序最基础的类型,相对于引用类型(对象类型)更简单,也是最重要的类型 Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本
环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉树的前序、中序和后序遍历。 示例 引入模块 pub mod binary_tree; 结构定义 use super::{NodeRef, Tree}; #[derive(Default)] pub struct Binary
环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉树的前序、中序和后序遍历的测试。 示例 测试模块 mod tests { use super::*; use crate::tree::Node; } 前序遍历 #[test] fn 前序遍历(
环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 基于二叉树来实现二叉搜索树,先实现插入和检索方法。 示例 引入模块 pub mod binary_search
环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 基于二叉树来实现二叉搜索树,实现删除方法。 示例 引入模块 pub mod binary_search_tree;
环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉搜索树的插入、检索和删除测试。 示例 测试模块 #[cfg(test)] mod tests { use super::*; } 插入 #[test] fn bst_插入() { let mut tree
环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 二叉树有个不好的地方,就是在最坏情况下,可能退化成单链表的结构。 比如按从小到大的顺序插入,节点都在右孩子上,平衡二叉树(AVL)可以解决这种情况。 示例 引入模块
1、安装 Rustup 是rust 官方版本管理工具,安装rustup 会自动安装好 rust(还会自动安装Cargo,这是Rust 的构建系统和包管理器,很重要),所以我们只需要安装 rustup 即可。 ①、官网安装地址 https://rustup.rs/# ②、对于 Mac 或者 Linux 系统 curl --proto '=https' --tlsv1.2 -sSf htt
struct CountdownIterator(i32); impl Iterator for CountdownIterator { type Item = i32; fn next(&mut self) -> Option<Self::Item> { self.0 -= 1; if self.0 < 0 { None } else { Some(self.
use std::ptr; use std::fmt::{ Display, Formatter, Result }; pub struct Node { value: i32, next: *mut Node } impl Node { pub fn new(val: i32) -> Self { Node { value: val, next: ptr::null_mut(), }
use postgres::{Client, NoTls}; fn main(){ let mut client = Client::connect("host=localhost user=postgres password=postgres port=5433", NoTls).unwrap(); client.batch_execute(" CREATE TABLE person ( id SERIA
枚舉 定義 通过 enum 声明关键字,并且在里面定义各个枚举的变体(具体枚举值),而每个枚举值可以绑定数据。比如 周五(Fri 就绑定了一个 String 类型的数据),除了 String 枚举的变体可以绑定任何类型的数据,甚至是结构体和其他的枚举(不能包含自己)。 enum Week { Mon, Tue, W
#[macro_use] extern crate mopa; struct Bear { // This might be a pretty fat bear. fatness: u16, } impl Bear { fn eat(&mut self, person: Box<dyn Person>) { self.fatness = (self.fatness as i16 + person.weight()) as u16; }
downcast-rs = "1.2" // Can call macro via namespace since rust 1.30. use downcast_rs::Downcast; use std::fmt::Debug; // To create a trait with downcasting methods, extend `Downcast` or `DowncastSync` // and run `impl_downcast!()` on the trait.
介绍 diesel 是一个 orm 框架 支持 postgresql,mysql,sqlite 不用的数据库接口可能会不一样 官方例子地址 实践 新建工程 cargo new --lib diesel_demo cd diesel_demo Cargo.toml [dependencies] diesel = { version = "1.4.4", features = ["postgres"] } 安装diesel_cli