Rust 常用的三方庫集合

2021-10-04 13:44:30 字數 2331 閱讀 5071

一、once_cell

是一種只執行一次的容器,多用於全域性變數安全初始化,或者延遲初始化

use std::;

use once_cell::sync::lazy;

use once_cell::sync::oncecell;

static global_data: lazy>> = lazy::new(|| );

fn global_data() -> &'static mutex> )

}

二、lazy_static
是一種執行一次的巨集,多用於初始化全域性變數,功能相對單一

#[macro_use]

extern crate lazy_static;

use std::collections::hashmap;

lazy_static! ;

static ref count: usize = hashmap.len();

static ref number: u32 = times_two(21);

}fn times_two(n: u32) -> u32

fn main() 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 =

serde_json = "1.0.50"

serde_yaml = "0.8.11"

serde_urlencoded = "0.6.1"

toml = "0.5.6"

chrono =

#[macro_use]

extern crate serde;

use chrono::*****datetime;

use serde_json;

#[derive(debug, serialize, deserialize)]

struct user

fn main() "#;

let v: user = serde_json::from_str(str).unwrap();

println!("", v) // user

}

四、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

println!("\n\ndone!");

let body = reqwest::get("")

.await?

.text()

.await?;

println!("body = ", body);

命令列相關的工具庫,非常強大

六、tokio、async-std
兩套類似的非同步程式設計runtime實現庫,雖然async-std強詞奪理說這是讓async程式設計發揚光大,其實是生生割裂了非同步程式設計生態的健康發展。

swift 常用三方庫

在決定pod進專案之前,最好先看看該庫是否還在更新 三方庫最好是封裝一層再使用,後期業務改動需要換庫會方便很多 約束布局 snapkit masonry的swift版 star 16.6k star 16.4k 鍵盤管理 iqkeyboardmanagerswift star 14.4k 網路請求 ...

常用第三方庫

1 通過cocoapods安裝 專案名稱 專案資訊 afnetworking 網路請求元件 fmdb 本地資料庫元件 sdwebimage 多個縮圖快取元件 uickeychainstore 存放使用者賬號密碼元件 reachability 監測網路狀態 datetools 友好化時間 mbprog...

IOS常用第三方庫

這裡有一篇csdn文章說得不錯 這個庫簡單易用,直接看一看文件就明白怎麼用了 當然,後來出了個yymodel,筆者研究了一下,其實與mjextension差不多,只是yymodel大部分都使用runtime最底層api,而mjextension更多的是oc語法。在效能上,據說yymodel要比mje...