EasyFix is a Rust toolkit for building applications that exchange FIX (Financial Information Exchange) messages. It combines message types generated from XML dictionaries with encoding, decoding, and an asynchronous session layer for acceptors and initiators.
Use the message types independently, or connect them to the session layer to handle connections and session events in your application.
The project is under active development, and its API may change without compatibility guarantees.
Each crate can be used directly. The easyfix facade provides a common entry
point with optional features for the parts your application needs.
| Crate | Purpose |
|---|---|
| easyfix | Facade and feature selection |
| easyfix-core | Shared types, message traits, and encoding/decoding primitives |
| easyfix-dictionary | Parsing and inspecting FIX XML dictionaries |
| easyfix-macros | Compile-time FIX string literals |
| easyfix-messages | Rust message code generation from XML dictionaries |
| easyfix-session | Acceptor and initiator sessions, application callbacks, and message storage |
The session example contains a working acceptor and initiator using generated messages. From the repository root, start the acceptor in one terminal:
RUST_LOG=info cargo run -p session-example --bin acceptorThen start the initiator in another:
RUST_LOG=info cargo run -p session-example --bin initiatorThe initiator connects locally, sends a NewOrderSingle, and logs the
acceptor's ExecutionReport reply. Press Ctrl-C to shut down each program.
For your own application, see the message generation guide and session setup examples.
Nightly Rust is required. Run these commands from the repository root:
cargo build --workspace --locked
cargo test --workspace --all-features --locked