加载中
Rust 同时迭代访问两个数组,生成 HashMap

Rust 的迭代器设计的非常强大和具有高度的一致性,在其他语言里写起来可能会很啰嗦。 生成 HashMap, BTreeMap 的时候需要每个元素为一个二元组结构, (key, value)。 use std::collections::...

01/11 11:05
32
Rust sqlx 0.4.0 开箱。

Github: https://github.com/launchbadge/sqlx Doc: https://docs.rs/crate/sqlx/0.4.0 Rust sqlx 0.4.0 最近正式发布了,上次用的它的 0.4 beta 版本,因为 0.3.x 版本在 MySQL 5.x 下有诡异...

Rust 强制类型转换

Rust 的强制类型转换的时候要先转为离自己最近的类型的指针,再转为其他指针,然后 Drefer 得到新类型的变量。 struct A { a: u64, b: u64, c: u64, d: u64, } #[derive(Debug, PartialEq)]...

2020/10/14 20:15
116
如何在同步函数中执行异步函数?

第一种: xxx = futures::executor::block_on(asnyc_fn1()).unwrap_or_default(); 第二种: let mut rt = tokio::runtime::Builder::new() .threaded_scheduler() .enable_all(......

2020/07/26 15:44
49
rust 多线程下的条件锁例子

这是官方给的例子,稍微修改了一下。 notify_one() 不会阻塞。 wait() 会阻塞。 use std::collections::HashMap; use log::info; fn main() { use std::sync::{Arc, Mutex, Condvar}; use st...

2020/06/29 18:56
631
i32, u32, u64,i64,i128,u128,(u64,u64),(i64,i64) 作为 Map Key 效率对比

结果: i32: 865 u32: 824 i64: 1102 u64: 1053 i128: 1385 u128: 1355 (i64, i64): 1465 (u64, u64): 1421 有符号和无符号速度基本无差别,谁放到后面执行谁的速度快一点,可能猜测跟 CPU ...

2020/06/29 16:24
115
Mutable borrow in loop [duplicate] 的问题解决方案

关于 Bowrrow check 的疑问,在 stackoverflow 里看到一个问题: https://stackoverflow.com/questions/46393890/mutable-borrow-in-loop 自己改了下代码,通过了,不过问题已经关闭了,记录...

2020/06/27 17:33
32
对比 rust 几种数据结构占用内存和插入速度,插入一亿条数据。

硬件:mbp 2019 编译参数:cargo run --release 插入 i32 条数: 100,000,000 结论 HashMap<i32,i32> 1.3G, 13s BTreeMap<i32,i32> 1.98G, 10s HashSet<i32> 650M, 13s Vec<i32> 381M, 0.27...

2020/06/22 13:07
464
rust tokio mpsc 异步发送数据

启动两个异步任务,一个阻塞在键盘输入。一个间歇的读取通道,有数据就输出。在快速输入的时候会卡住,因为 mpsc 的 buffer 设置为了 5。 代码如下: use std::io; use tokio::task; use to...

2020/06/03 19:32
356
actix-web wrap_fn() middleware 拦截请求方法。

问了一圈 stackoverflow,没有人回答,最后在代码注释里找到了相关范例,修改后如下: #![allow(clippy::type_complexity)] use actix_service::Service; use actix_web::{web, App, HttpSer...

2020/06/03 17:44
664
rust 返回 impl Future 的三种写法。

use futures::{future, Future}; use futures::future::{FutureExt, Ready}; use std::result::Result; use std::error::Error; // 返回 impl Future 的三种写法 async fn f() -> Result<usi...

2020/06/03 14:30
478
Rust Future 小结:几种 Future 的写法,本质是一样的。

Future 牵扯的概念比较多,Future 可以多个串起来当作一个 task,然后众多 task 再送入线程池,线程在执行的时候会阻塞在 block_on() 调用等待事件。 比如 epoll 事件,它会驱动最靠近的 Fu...

2020/05/27 14:40
739
Rust 裸指针操作范例。

内存分布和 C 基本一致,不过还没有找到如何打印变量本身在栈中的位置的方法,也许它已经被完全编译器优化为偏移量了,没有深入研究。 &stu1 的值是结构体的首地址,第一个 String 占用了 0x...

2020/05/25 12:03
525
Rust: 撸了一个用来保存进度的包。

撸了一个记录进度的包,用于记录多线程各个线程的进度。用法看单元测试部分。 use std::path::Path; use std::io::Write; #[derive(Debug)] pub struct Progress<'a> { file: &'a str, works...

2020/05/11 18:16
73
rust 多线程无锁读写一个变量

这个方案可能是目前发现的最优美简洁的了: use crossbeam::thread; use std::collections::HashSet; fn main() { let mut a = HashSet::new(); a.insert("aaa"); let mut input = vec![a.cl...

2020/05/08 16:35
631
Rust https web server 范例

Hyper 比较底层,不适合用于直接生产。适合基于它做封装。 Actix-web 文档比较友好,速度也不错。 Rocket 采用大量的宏,不适合 IDE 编写提示。 最后我们采用 Actix-web 作为我们的生产环境。...

2020/04/29 14:21
488
【原创】Rust 工程多个 main() 函数的组织方式

在 rust-bitcoin 的项目意外找到了答案。 CLion 也能正确解析和调试,非常方便,它默认 example 下支持一个文件里包含一个 main.rs

2020/04/26 12:05
953
【原创】Rust 一个 RC RefCell 的小例子。

Rc 和 Refcell 并不能违反 Rust 的借用原则,多个只读,一个可写借用。 use std::cell::RefCell; use std::rc::Rc; use core::borrow::BorrowMut; #[derive(Debug)] struct Tree { name: Str...

2020/04/24 08:15
1K
【原创】Rust 全局静态可变变量的申明,采用 lazy_static + Arc + Mutex

错误范例:用 Arc + RefCell: const DBSTR: &str = "mysql://root:root@127.0.0.1:3306/dbname"; static DBPOOL:Arc<RefCell<PooledConn>> = Arc::new(RefCell::new(Pool::new_manual(1, 1,...

2020/04/20 20:56
1.3K
【原创】Rust unwrap_or_continue 我感觉有必要加入到语言特性中。

第一种写法: let addr = match li.tag("a").class("xxx").find() { Some(v) => v, None => continue }; // next here 第二种: let addr = li.tag("a").class("xxx").find(); if addr.is_no...

2020/04/18 11:00
166

没有更多内容

加载失败,请刷新页面

返回顶部
顶部