#wasm-component #component #async #stdlib

wstd

为Wasm组件和WASI 0.2提供的异步标准库

4个版本 (破坏性更新)

0.4.0 2024年7月29日
0.3.0 2024年7月26日
0.2.0 2024年7月26日
0.1.0 2024年7月26日

#110 in WebAssembly

Download history 247/week @ 2024-07-21 141/week @ 2024-07-28 3/week @ 2024-08-04

每月391次下载

MIT或Apache-2…

58KB
1K SLoC

wstd

为Wasm组件和WASI 0.2提供的异步标准库

这是一个专为支持Wasm组件而编写的最小化异步标准库。它主要存在是为了在async-std、smol或tokio支持Wasm组件和WASI 0.2之前,让用户能够用Rust编写基于异步的应用程序。一旦这些运行时提供了支持,建议用户切换到使用这些运行时。

示例

基于TCP的回显服务器

use wstd::io;
use wstd::iter::AsyncIterator;
use wstd::net::TcpListener;
use wstd::runtime::block_on;

fn main() -> io::Result<()> {
    block_on(|reactor| async move {
        let listener = TcpListener::bind(&reactor, "127.0.0.1:8080").await?;
        println!("Listening on {}", listener.local_addr()?);
        println!("type `nc localhost 8080` to create a TCP client");

        let mut incoming = listener.incoming();
        while let Some(stream) = incoming.next().await {
            let stream = stream?;
            println!("Accepted from: {}", stream.peer_addr()?);
            io::copy(&stream, &stream).await?;
        }
        Ok(())
    })
}

安装

$ cargo add wstd

安全性

此crate使用#![deny(unsafe_code)]来确保所有实现都是100%安全的Rust代码。

贡献

想加入我们吗?查看我们的“贡献”指南,并查看一些这些问题

许可证

根据您的选择,许可为Apache许可证,版本2.0MIT许可证
除非您明确声明,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,均将根据上述条款双许可,不附加任何额外条款或条件。

依赖

~2.5MB
~66K SLoC