Skip to main content

Crate adif_io

Crate adif_io 

Source
Expand description

Library to read and write ADIF formated files

licensed under CC BY-SA 4.0, To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/

Author: Andreas, df1asc@darc.de

§Example

use std::fs;
use adif_io::{DeserializeADI, Doc};

fn main() {
    let content = fs::read_to_string("test_data/big_testfile_1000.adi").expect("error reading ADI file: {err}");
    let mut doc = Doc::new();
    doc.deserialize_adi(&content).expect("could not deserialize from ADI");

    // Header info from file
    let header = doc.header();
    println!("Comment  : {}", header.comment());
    println!("Prog ID  : {}", header.program_id());
    println!("Prog Ver : {}", header.program_ver());

    // Count QSOs and print them
    println!("QSO count: {}", doc.iter_record().count());
    doc.iter_record().enumerate().for_each(|(i, qso)| println!("QSO {}: {:?}", i+1, qso));

    // Get a QSO and modify data
    let mut qso = doc.get_record_mut(5).expect("no QSO available");
    qso.insert("NOTES", "Test data".into());

    // Create a `Record` and add it, case for field names does not matter
    let qso = Record::from(vec![
        ("QSO_DATE", "20231009"),
        ("TIME_ON", "1245"),
        ("Call", "DK5XXX"),
        ("NAME", "Chris"),  // Upper case field name inserted
    ]);
    println!("Name: {:?}", qso.get("name").unwrap());  // Accessed field name with lower case
    doc.add_record(qso);
}

Structs§

Doc
Represents an ADIF document with header and QSO records
Header
Represents an ADIF header
Record
Represents a single ADIF QSO record

Enums§

Type
The ADIF types for ADI

Traits§

DeserializeADI
Converting QSO data from an ADI String
SerializeADI
Converting QSO data struct to ADI String