xportrs

Crates.ioxportrs
lib.rsxportrs
version0.0.8
created_at2026-01-08 17:11:09.039468+00
updated_at2026-01-13 21:22:17.661798+00
descriptionCDISC-compliant XPT file generation and parsing library for Rust
homepage
repositoryhttps://github.com/rubentalstra/xportrs
max_upload_size
id2030709
size5,545,452
Ruben Talstra (rubentalstra)

documentation

https://docs.rs/xportrs

README

xportrs logo

xportrs

Pure Rust SAS XPORT (XPT) library for CDISC clinical trial data submissions

Crates.io Documentation CI dependency status License: MIT DOI

A safe, DataFrame-agnostic implementation of SAS Transport v5 (XPT) file I/O with built-in regulatory compliance validation for FDA, PMDA, and NMPA submissions.

Features

  • Regulatory Compliance — Built-in validation for FDA, PMDA, and NMPA submission requirements
  • Read & Write — Full support for SAS Transport v5 format
  • Auto File Splitting — Automatically splits files exceeding agency size limits (5 GB)
  • Framework Agnostic — Works with any in-memory data representation
  • Safe by Design — Zero unsafe code, no C dependencies

Regulatory Agency Support

Agency Region Character Encoding Max File Size
FDA United States ASCII 5 GB
PMDA Japan UTF-8 (Japanese) 5 GB
NMPA China UTF-8 (Chinese) 5 GB

All agencies enforce: 8-byte variable names, 40-byte labels, 200-byte character values.

Installation

[dependencies]
xportrs = "0.0.8"

Quick Example

use xportrs::{Xpt, Agency};

fn main() -> Result<(), xportrs::Error> {
    // Read an XPT file
    let dataset = Xpt::read("dm.xpt")?;

    // Write with FDA compliance validation
    Xpt::writer(dataset)
        .agency(Agency::FDA)
        .finalize()?
        .write_path("dm.xpt")?;

    Ok(())
}

For comprehensive examples and API documentation, see docs.rs/xportrs.

Documentation

Safety & Quality

Aspect Status
Unsafe Code #![forbid(unsafe_code)]
External C Dependencies None
Minimum Rust Version 1.92

Related Projects

License

MIT License — see LICENSE for details.

Commit count: 52

cargo fmt