33个版本 (8个重大更新)

0.9.0 2022年4月28日
0.7.0 2021年10月26日
0.5.0 2021年2月21日
0.4.0 2020年5月17日
0.1.8 2017年6月17日

#2#tls-acceptor

Download history 6720/week @ 2024-04-23 8367/week @ 2024-04-30 8560/week @ 2024-05-07 7786/week @ 2024-05-14 7164/week @ 2024-05-21 7774/week @ 2024-05-28 8421/week @ 2024-06-04 8489/week @ 2024-06-11 7527/week @ 2024-06-18 6718/week @ 2024-06-25 6941/week @ 2024-07-02 7690/week @ 2024-07-09 7365/week @ 2024-07-16 6427/week @ 2024-07-23 8219/week @ 2024-07-30 7324/week @ 2024-08-06

每月下载量 30,545
用于 40 个crate (25直接)

MIT/Apache

66KB
1.5K SLoC

GitHub Workflow Status License crates.io

tls-api

实现无关的通用TLS API。

可以使用此crate独立于实际的TLS实现编写与TLS一起工作的库,库的用户可以填充实际的类型实现。

此crate只提供接口:接受器和连接器。

Tokio或async-std

此crate(及其依赖的tls-api-* crate)有两个互斥的功能

  • runtime-tokio 实现了基于tokio的API
  • runtime-async-std 实现了基于async-std的API

静态或动态

API提供静态或动态版本。

tls_api::TlsAcceptortls_api::TlsConnector 类型是 Sized,每个使用它们的函数或结构都需要用这些类型参数化,例如

async fn create_listener<C: tls_api::TlsAcceptor>()
    -> anyhow::Result<tls_api::TlsStream<async_std::net::TcpStream>>
{ ... }

或者,还有函数的动态调度版本: tls_api::TlsAcceptorTypetls_api::TlsConnectorType。这些类型不是可定长的。可以像这样使用

async fn create_listener(acceptor: &tls_api::TlsAcceptorType)
    -> anyhow::Result<tls_api::TslStreamBox>
{ ... }

注意 create_listener 没有类型参数,这使得编码稍微容易一些,但以性能略有下降为代价。

依赖项

~10–22MB
~415K SLoC