finds.dev← search

// the find

Enet4/dicom-rs

★ 544 · Rust · Apache-2.0 · updated Jun 2026

Rust implementation of the DICOM standard

A pure-Rust implementation of the DICOM standard, covering file I/O, pixel data decoding, DICOM JSON, and the full DIMSE network protocol (C-STORE, C-FIND, C-MOVE, C-ECHO). This is for Rust developers building medical imaging tooling who don't want to shell out to GDCM or depend on a C++ FFI chain.

The workspace is well-decomposed — you can pull in just `dicom-object` for file parsing without dragging in the network stack. Fuzz targets exist for the parser, pixel decoder, and PDU roundtrip, which matters a lot for a format as malformed-in-the-wild as DICOM. The transfer syntax registry is feature-gated, so you pay only for the codecs you actually enable (JPEG-LS, JPEG 2000, JPEG XL all optional). Active maintenance — last push was yesterday, and the MSRV policy is clearly documented.

Pixel data support has a hard dependency on external native libraries (GDCM) for some transfer syntaxes, which breaks the 'pure Rust' story the README advertises once you need anything beyond baseline uncompressed or basic JPEG. The network layer (`ul`) is low-level enough that you'd have to build your own SCU/SCP state machines on top of it for real PACS integration — the CLI tools show you how, but there's no mid-level async service abstraction you can actually reuse. DICOM conformance statements are absent, so you can't tell which SOP classes or transfer syntaxes are fully implemented versus stubbed. At 544 stars it's the best Rust option, but the ecosystem is thin — if you hit an edge case in a vendor's proprietary DICOM dialect, you're probably fixing it yourself.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →