2个不稳定版本
0.2.0 | 2021年6月20日 |
---|---|
0.1.0 | 2020年3月22日 |
#1554 in 异步
32 每月下载量
150KB
3K SLoC
F1 API
现代F1视频游戏的遥测API的Rust实现。
该项目实现了当前一代F1视频游戏(由Codemasters提供)的遥测API的客户端库。库是用Rust编写的,使用tokio进行异步网络。
由❤️和🦀构建,作为Nord SDK的一部分。
入门
库的大部分内容处理接收和解析F1游戏发送的数据包的低级细节。用户需要交互的只有 F1
结构体及其高级接口。
use std::net::{IpAddr, SocketAddr};
use f1_api::F1;
use f1_api::packet::Packet::{
Event, Lap, Motion, Participants, Session, Setup, Status, Telemetry
};
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() {
let ip_address = IpAddr::from([0, 0, 0, 0]);
let port = 20777;
let socket = SocketAddr::new(ip_address, port);
let mut stream = F1::stream(socket).unwrap();
while let Some(packet) = stream.next().await {
match packet {
Event(_) => println!("Received an Event packet"),
Lap(_) => println!("Received a Lap packet"),
Motion(_) => println!("Received a Motion packet"),
Participants(_) => println!("Received a Participants packet"),
Session(_) => println!("Received a Session packet"),
Setup(_) => println!("Received aaSetup packet"),
Status(_) => println!("Received a Status packet"),
Telemetry(_) => println!("Received a Telemetry packet"),
}
}
}
F1::stream
是一个异步函数,返回一个传入数据包的流,这是与 f1-api
crate 交互的推荐方式。
示例
示例文件夹包含展示如何使用此库的示例。例如,入门部分的代码可以使用以下命令运行
cargo run --example readme
更复杂的示例是 cli
,它使用库分析传入的数据包并将游戏状态的有趣信息打印到终端。它可以运行
cargo run --example cli
许可
根据您的选择,许可协议为
- Apache License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则任何有意提交以包含在作品中并由您定义的Apache-2.0许可中的贡献,均应按上述方式双许可,不附加任何其他条款或条件。
依赖关系
~4–15MB
~161K SLoC