47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
# medicallib_rust
|
|
|
|
MedicalSim core library rewrite in Rust.
|
|
|
|
- Safe, minimal API for medical simulation primitives
|
|
- Optional `serde` feature for serialization
|
|
- Optional `ffi` feature to expose a stable C ABI (`cdylib`)
|
|
|
|
## Build
|
|
|
|
- Build: `cargo build` (tests: `cargo test`)
|
|
- FFI build: `cargo build --features ffi --release`
|
|
- Format/Lint: `cargo fmt --all` and `cargo clippy -D warnings`
|
|
|
|
## Examples
|
|
|
|
- Rust: `cargo run --example usage` and `cargo run --example patient`
|
|
- C FFI: see `examples/c/ffi_example.c`, header in `ffi/medicallib.h`
|
|
|
|
## FFI ABI
|
|
|
|
- Opaque `MLPatient` handle
|
|
- Functions: `medicallib_bmi`, `ml_patient_new/free/update`, `ml_patient_summary`, `ml_patient_organ_summary`
|
|
- All allocated strings must be freed with `ml_string_free`
|
|
|
|
## Version Matrix
|
|
|
|
- Rust 1.70+ (Edition 2021)
|
|
- OS: Linux, macOS, Windows (see GitHub Actions CI)
|
|
|
|
## Docs
|
|
|
|
- Architecture: `ARCHITECTURE.md`
|
|
- Migration (C++ -> Rust): `MIGRATION.md`
|
|
- C/C++ install: `INSTALL.md`
|
|
|
|
## Packaging (binary distribution)
|
|
|
|
- Linux/macOS: run `../scripts/package.sh [target-triple]` from `medicallib_rust/` (or `make package`).
|
|
- Windows: run `..\scripts\package.ps1 [target-triple]` from `medicallib_rust\`.
|
|
- Artifacts are placed in `medicallib_rust/dist/` as both `.tar.gz` (Unix) and `.zip`.
|
|
|
|
## CI: GitHub + Gitea
|
|
|
|
- GitHub Actions workflow: `.github/workflows/ci.yml`
|
|
- Gitea Actions workflow: `.gitea/workflows/ci.yml`
|