#esp #serde #ess #esm #mw

nightly esl

用于读取、写入和处理ESM/ESP/ESS文件的库

40个版本

0.18.0 2023年10月6日
0.17.1 2022年12月22日
0.16.0 2022年12月17日
0.10.4 2022年11月10日
0.3.1 2020年3月26日

#1384 in 编码


用于 espa

MIT/Apache

450KB
11K SLoC

maintenance: actively developed

esl

用于读取、写入和处理ESM/ESP/ESS文件的库。

use esl::{CodePage, RecordSerde};
use esl::read::{RecordReadMode, Records};
use serde_serialize_seed::{ValueWithSeed, VecSerde};
use std::fs::File;
use std::io::{BufReader, BufWriter};

fn main() {
    if let Ok(input) = File::open("Morrowind.esm") {
        let mut input = BufReader::new(input);
        let records = Records::new(CodePage::Russian, RecordReadMode::Strict, 0, &mut input);
        let records = records.map(|x| {
            match x {
                Ok(mut x) => {
                    x.fit();
                    x
                },
                Err(e) => panic!("{}", e)
            }
        }).collect::<Vec<_>>();
        let output = File::create("Morrowind.esm.yaml").unwrap();
        serde_yaml::to_writer(
            BufWriter::new(output),
            &ValueWithSeed(&records[..], VecSerde(RecordSerde { code_page: None }))
        ).unwrap();
    }
}

依赖关系

~7MB
~128K SLoC