41个版本 (12个稳定版)
2.0.1 | 2024年8月14日 |
---|---|
2.0.0 | 2023年12月31日 |
1.3.0 | 2022年11月29日 |
1.2.5 | 2020年11月28日 |
0.0.1 | 2020年2月3日 |
1038 在 异步
每月下载量295,094
在 395 个crates中使用了(286个直接使用)
275KB
57 行
smol
一个轻量级且快速的异步运行时。
此crate简单地导出其他更小的异步crate(见源代码)。
要使用基于tokio的库与smol一起使用,请将async-compat
适配器应用于futures和I/O类型。
示例
连接到HTTP网站,发起GET请求,并将响应管道输出到标准输出
use smol::{io, net, prelude::*, Unblock};
fn main() -> io::Result<()> {
smol::block_on(async {
let mut stream = net::TcpStream::connect("example.com:80").await?;
let req = b"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n";
stream.write_all(req).await?;
let mut stdout = Unblock::new(std::io::stdout());
io::copy(stream, &mut stdout).await?;
Ok(())
})
}
更多示例在示例目录中。
子crate
- async-channel - 多生产者多消费者通道
- async-executor - 可组合的异步执行器
- async-fs - 异步文件系统原语
- async-io - I/O类型的异步适配器,包括计时器
- async-lock - 异步锁(屏障、互斥锁、读写锁、信号量)
- async-net - 异步网络原语(TCP/UDP/Unix)
- async-process - 与进程交互的异步接口
- async-task - 构建执行器的任务抽象
- blocking - 用于阻塞I/O的线程池
- futures-lite - futures 的更轻量级分支
- polling - 到epoll、kqueue、event ports和wepoll的可移植接口
TLS证书
一些代码示例使用TLS进行身份验证。仓库包含一个自签名的测试证书,但不应用于实际场景。浏览器和curl等工具会将此证书视为不安全。
在浏览器中,接受安全提示或使用以下命令行代码curl -k
绕过安全警告。
minica --domains localhost -ip-addresses 127.0.0.1 -ca-cert certificate.pem
openssl pkcs12 -export -out identity.pfx -inkey localhost/key.pem -in localhost/cert.pem
制作证书的另一款有用工具是mkcert。
MSRV策略
此crate的最小支持Rust版本(MSRV)为1.63。作为一项临时政策,MSRV不会超过由Debian稳定版提供的当前Rust版本(当前版本为1.63)。然而,在生态发生重大变化或出现安全漏洞的情况下,MSRV可能会进一步提高。
许可证
根据您的选择,许可协议为以下之一
- Apache License, Version 2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT或http://opensource.org/licenses/MIT)
。
贡献
除非您明确表示,否则任何根据Apache-2.0许可证定义的、有意提交以包含在作品中的贡献,都将按照上述方式双许可,不附加任何额外条款或条件。
依赖项
~3–12MB
~140K SLoC