4个版本
0.1.4 | 2024年3月21日 |
---|---|
0.1.3 | 2024年2月13日 |
0.1.1 | 2024年2月12日 |
0.1.0 | 2024年2月12日 |
15 在 财务 中排名
1,017 每月下载量
用于 7 crates
1MB
28K SLoC
QuickFIX Rust
本项目是非官方的 quickfix 库与Rust项目之间的绑定。
功能
- 在 quickfix 库之上提供基本的和安全性的API包装器。
- 在Rust Tier 1支持的任何硬件和操作系统上运行(Windows 7+、MacOS 10.12+ 和 Linux)。
- 由于项目分为最小的crates,因此仅包含和编译所需的内容。
- 消息解码/编码包括运行时验证。
- 支持FIX版本4x(版本5x可以从XML规范文件中本地构建)。
- 基于规范的运行时消息验证。
- 基于规范的生成类型安全的FIX消息、字段和重复组。
- 会话状态存储选项:SQL、文件、内存。
- 日志选项:stdout、stderr、log 或任何其他crate,如果您实现了自己的trait。
文档
外部网站
- crates.io: QuickFix、QuickFix FFI QuickFix 规范解析器 QuickFix 消息生成器 FIX 4.0 FIX 4.1 FIX 4.2 FIX 4.3 FIX 4.4 FIX 5.0
- docs.rs: QuickFix QuickFix FFI QuickFix 规范解析器 QuickFix 消息生成器 FIX 4.0 FIX 4.1 FIX 4.2 FIX 4.3 FIX 4.4 FIX 5.0
示例
以下是最简单的应用程序,可用于入门QuickFix
use std::{
env,
io::{stdin, Read},
process::exit,
};
use quickfix::*;
#[derive(Default)]
pub struct MyApplication;
impl ApplicationCallback for MyApplication {
// Implement whatever callback you need
fn on_create(&self, _session: &SessionId) {
// Do whatever you want here 😁
}
}
fn main() -> Result<(), QuickFixError> {
let args: Vec<_> = env::args().collect();
let Some(config_file) = args.get(1) else {
eprintln!("Bad program usage: {} <config_file>", args[0]);
exit(1);
};
let settings = SessionSettings::try_from_path(config_file)?;
let store_factory = FileMessageStoreFactory::try_new(&settings)?;
let log_factory = LogFactory::try_new(&StdLogger::Stdout)?;
let app = Application::try_new(&MyApplication)?;
let mut acceptor = SocketAcceptor::try_new(&settings, &app, &store_factory, &log_factory)?;
acceptor.start()?;
println!(">> App running, press 'q' to quit");
let mut stdin = stdin().lock();
let mut stdin_buf = [0];
loop {
let _ = stdin.read_exact(&mut stdin_buf);
if stdin_buf[0] == b'q' {
break;
}
}
acceptor.stop()?;
Ok(())
}
您可以考虑查看这个目录以获取更多示例。
是否已准备好投入生产?
是的。但请注意,原始FIX库的并非所有功能都可用。如果您缺少某些需求:欢迎提交PR/反馈😁!
API可能会在未来版本中更改
该包仍在审查过程中。请随时参与并在此GitHub问题中分享您的观点。
注意:我个人目前不使用生成的消息结构体。我知道它们在单元测试中表现良好,可用于生产代码。欢迎对此部分提供反馈!
项目状态
我不会积极开发此项目的更多功能。
对我来说,它实际上已经相当完整了!
如果您缺少某些内容,请随时提出问题/创建PR。欢迎贡献。
构建要求
以下包必须安装才能构建库
cmake
- C++编译器(具有C++17支持)
rustup
/rustc
/cargo
(显然 😉)rustfmt
用于从规范自动生成消息。
依赖项
~0.3–1MB
~23K SLoC