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 中使用

MPL-2.0 许可证

51KB
1.5K SLoC

nine   最新版本 Rustc 版本 1.34.2 ![构建状态]

将 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