# Rust bindings for MusicBrainz libdiscid
[](https://crates.io/crates/discid)
[](https://docs.rs/discid)
[](https://crates.io/crates/discid)
[](https://builds.sr.ht/~phw/rust-discid/commits/main/?)
## About
discid provides Rust bindings for the MusicBrainz DiscID library [libdiscid](http://musicbrainz.org/doc/libdiscid).
It allows calculating DiscIDs (MusicBrainz and freedb) for Audio CDs. Additionally
the library can extract the MCN/UPC/EAN and the ISRCs from disc.
## Requirements
- libdiscid >= 0.6.0
## Usage
### Read only the TOC
```rust no_run
use discid::DiscId;
fn main() {
// Specifying the device is optional. If set to `None` a platform
// specific default will be used.
let device = Some("/dev/cdrom");
let disc = DiscId::read(device).expect("Reading disc failed");
println!("ID: {}", disc.id());
}
```
### Read the TOC and ISRCs
```rust no_run
use discid::{DiscId, Features};
fn main() {
let disc = DiscId::read_features(None, Features::ISRC).expect("Reading disc failed");
println!("Disc ID: {}", disc.id());
for track in disc.tracks() {
println!("Track #{} ISRC: {}", track.number, track.isrc);
}
}
```
See the [API documentation](https://docs.rs/discid) for details.
Additional examples are available in the
[examples/](https://git.sr.ht/~phw/rust-discid/tree/main/item/examples) directory.
## Contribute
The source code for rust-discid is available on
[SourceHut](https://git.sr.ht/~phw/rust-discid).
Please report any issues on the
[issue tracker](https://todo.sr.ht/~phw/discid-bindings).
Patches can be submitted to the [mailing list](https://lists.sr.ht/~phw/musicbrainz).
You can clone the repository directly on SourceHut and submit your changes
with the "Prepare patchset" button. Please see SourceHut's
[documentation for sending patches upstream](https://man.sr.ht/git.sr.ht/#sending-patches-upstream)
for details.
## License
rust-discid Copyright (c) 2019-2023 by Philipp Wolfer <ph.wolfer@gmail.com>
rust-discid is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
See [LICENSE](./LICENSE) for details.