8 个版本 (4 个破坏性更新)
使用旧的 Rust 2015
0.5.0 | 2019 年 11 月 8 日 |
---|---|
0.4.0 | 2018 年 11 月 6 日 |
0.3.0 | 2018 年 9 月 17 日 |
0.2.1 | 2018 年 9 月 16 日 |
0.1.2 | 2016 年 7 月 20 日 |
#2454 in 解析实现
在 2 crate 中使用
51KB
1.5K SLoC
nine ![构建状态]
将 9p 协议作为 serde 格式和消息类型。
该crate包含表示9p2000协议中各种消息类型的结构体(其他版本即将推出),以及这些消息的线格式序列化和反序列化器。
不包括服务器实现或抽象。
此设计的目的在于允许轻松扩展和实验协议。
稳定性
该库处于开发初期阶段,因此可能会发生重大、不兼容的后向更改。建议用户谨慎使用。
使用示例
连接到 9p 服务器并开始版本协商
use std::io::prelude::*;
use std::net::TcpStream;
use nine::ser::*;
use nine::de::*;
use nine::p2000::*;
let connection = TcpStream::connect("127.0.0.1").unwrap();
let version = Tversion { tag: NOTAG, msize: u32::max_value(), version: "9p2000".into() };
let serialized_message: Vec<u8> = into_bytes(&version).unwrap();
connection.write_all(&serialized_message).unwrap();
客户端二进制文件
nine
还可以用作简单的单次 9p 客户端,类似于 plan9port 的 9p
命令。
目前仅实现了非认证的明确附加到 Unix 套接字的读取。
示例
# set up a server to listen at /tmp/9ptest, then:
$ nine -a /tmp/9ptest read /foo
bar
特别感谢
Casey Rodarmor 为协作设计初期。
在 Rust 社区中回答我问题的无数其他人。
依赖项
~0.6–1.2MB
~28K SLoC