一、once_cell

是一种只执行一次的容器,多用于全局变量安全初始化,或者延迟初始化

  • set(T) => 安全的设置全局变量
  • get() -> T => 获取已经设置的全局变量
  • get_or_init(Fn) => 获取全局变量,为空则初始化
  • Lazy::new(Fn) => 延迟创建全局变量
use std::{sync::Mutex, collections::HashMap};
use once_cell::sync::Lazy;
use once_cell::sync::OnceCell;static GLOBAL_DATA: Lazy<Mutex<HashMap<i32, String>>> = Lazy::new(|| {let mut m = HashMap::new();m.insert(13, "Spica".to_string());m.insert(74, "Hoyten".to_string());Mutex::new(m)
});fn global_data() -> &'static Mutex<HashMap<i32, String>> {static INSTANCE: OnceCell<Mutex<HashMap<i32, String>>> = OnceCell::new();INSTANCE.get_or_init(|| {let mut m = HashMap::new();m.insert(13, "Spica".to_string());m.insert(74, "Hoyten".to_string());Mutex::new(m)})
}
二、lazy_static

是一种执行一次的宏,多用于初始化全局变量,功能相对单一

#[macro_use]
extern crate lazy_static;use std::collections::HashMap;lazy_static! {static ref HASHMAP: HashMap<u32, &'static str> = {let mut m = HashMap::new();m.insert(0, "foo");m.insert(1, "bar");m.insert(2, "baz");m};static ref COUNT: usize = HASHMAP.len();static ref NUMBER: u32 = times_two(21);
}fn times_two(n: u32) -> u32 { n * 2 }fn main() {println!("The map has {} entries.", *COUNT);println!("The entry for `0` is \"{}\".", HASHMAP.get(&0).unwrap());println!("A expensive calculation on a static results in: {}.", *NUMBER);
}
三、serde、serde_json、serde_yaml、serde_urlencoded、toml-rs

是一个关于序列化和反序列化的三方库,常用于配置文件解析,或http返回json

[dependencies]
serde = { version = "1.0.105", features=["derive"] }
serde_json = "1.0.50"
serde_yaml = "0.8.11"
serde_urlencoded = "0.6.1"
toml = "0.5.6"
chrono = { version = "0.4.11", features=["serde"]}

#[macro_use]
extern crate serde;use chrono::NaiveDateTime;
use serde_json;#[derive(Debug, Serialize, Deserialize)]
struct User {name: String,age: u32,#[serde(rename="sex")]gender: u32,birthday: NaiveDateTime,
}fn main() {let str = r#"{"name": "jack", "age": 20, "sex": 1, "birthday": "2020-01-01T15:14:15"}"#;let v: User = serde_json::from_str(str).unwrap();println!("{:?}", v) // User { name: "jack", age: 20, gender: 1, birthday: 2020-01-01T15:14:15 }
}
四、hyper、reqwest

一个基于tokio的网络库

    let client = Client::new();let mut res = client.get(url).await?;println!("Response: {}", res.status());println!("Headers: {:#?}\n", res.headers());// Stream the body, writing each chunk to stdout as we get it// (instead of buffering and printing at the end).while let Some(next) = res.data().await {let chunk = next?;io::stdout().write_all(&chunk).await?;}println!("\n\nDone!");
let body = reqwest::get("https://www.rust-lang.org").await?.text().await?;println!("body = {:?}", body);
五、clap、dotenv、app_dirs、preferences

命令行相关的工具库,非常强大

六、tokio、async-std

两套类似的异步编程runtime实现库,虽然async-std强词夺理说这是让async编程发扬光大,其实是生生割裂了异步编程生态的健康发展。

Rust - 常用的三方库集合相关推荐

  1. 项目中常用的github库集合

    1.沉浸式      immersionbar //沉浸式状态栏// 基础依赖包,必须要依赖implementation 'com.gyf.immersionbar:immersionbar:3.0. ...

  2. 机器学习常用python三方库

    1.NumPy 最常用的也许是它的N维数组对象,其他还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,线性代数.傅里叶变换和随机数生成函数等.NumPy提供了两种基本的对象:nd ...

  3. iOS开发常用三方库、插件、知名博客

    TimLiu-iOS iOS开发常用三方库.插件.知名博客等等,期待大家和我们一起共同维护,同时也期望大家随时能提出宝贵的意见(直接提交Issues即可). 持续更新... 版本:Objective- ...

  4. python标准库和第三方库_python常用标准库及三方库

    python 常用标准库及三方库 作者: yegle 链接: https://www.zhihu.com/question/20501628/answer/153211 84 著作权归作者所有.商业转 ...

  5. B端常用9大开源组件库集合(必备收藏)

    假如你要研发一款To B Web端产品,面对眼花缭乱的开源组件库要如何选? 哪些又是目前业内团队常用的B端开源组件库? 由于知果负责公司Hundsun Design设计体系的构建,因此对组件库比较了解 ...

  6. python常用标准库有哪些-Python开发中常用的标准库

    大多数基于 Python 开发的应用程序都会用到本地标准库和三方库,这样不仅能让我们把时间去关注真正的业务开发,也能学习到更多价值含量高的程序设计和开发思想.程序开发中有一句著名的话叫做: Don't ...

  7. python async socket_Python开发中常用的标准库,这些都是你应该掌握的

    大多数基于 Python 开发的应用程序都会用到本地标准库和三方库,这样不仅能让我们把时间去关注真正的业务开发,也能学习到更多价值含量高的程序设计和开发思想.程序开发中有一句著名的话叫做: Don't ...

  8. iOS最全的三方库、插件、博客汇总

    目录 UI@ 日历三方库@ 下拉刷新@ 模糊效果@ 富文本@ 图表@ 颜色@ 表相关@(TabbleView.Tabbar.即时聊天界面) TableView@ CollectionView@ 隐藏与 ...

  9. Android解析JSON,你真的需要三方库?

    一般情况下,如果服务器返回 JSON 数据,而且你又是做 Android 的,那么你首先想到的可能是GSON,或是fastJson这样的框架.这些框架能够很方便和快速的让我们将 JSON 转换成本地对 ...

  10. 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

    一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...

最新文章

  1. Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist参数详解
  2. 第三周项目一-个人所得税计算器
  3. 无法识别system.web.extensions的处理方法
  4. wxWidgets:wxAuiManager类用法
  5. 解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (C:\Program Files\Java\jd
  6. html Window与document区别(轉)
  7. Hibernate所用15个jar包
  8. emui换鸿蒙内核,华为EMUI 11.1三月上线,安卓内核替换为鸿蒙内核
  9. Hibernate概述
  10. 安装 mysql 数据库, 并做 主 从(二)
  11. Java核心技术卷1 如何阅读?
  12. LNMP一键安装脚本(执行后只需等待即可)
  13. openvino系列 13. 使用 OpenVINO 多模型级联使用:车辆检测与识别示例
  14. vue+cropperjs实现图片裁剪功能——PC端+移动端——技能提升
  15. android4k分辨率,4k手机有哪些 4k分辨率是多少【图文】
  16. 用R进行一元线性回归分析建模
  17. 什么是软文推广?如何才能把软文推广的更好呢?
  18. 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
  19. Ubuntu 16.04/18.04/20.04/deepin v20安装insight的方法
  20. 简述同步和异步的区别

热门文章

  1. 李彦宏高中全国计算机比赛,扒一扒IT大佬高考:马云数学1分考北大 李彦宏是状元...
  2. 【算法设计与分析】三个博弈论算法分析
  3. Hadoop-统计红楼梦里出现名字的次数(MapReduce学习)
  4. win10如何重装系统(联想笔记本)
  5. Android 获取Device Id
  6. package-lock和package-shrinkwrap
  7. APP启动无视频数据-YYC松鼠短视频系统
  8. Java的面向对象 -- 继承
  9. 光电反射传感器 红外对管模块
  10. 逆变器LCL滤波器参数设计(一)