2个不稳定版本

0.2.0 2021年7月8日
0.1.0 2021年7月8日

#743 in 数学

MIT/Apache

170KB
4.5K SLoC

IO示例

读取文件

use citi::Record;
use std::fs::File;

let mut file = File::open("file.cti").unwrap();
let record = Record::from_reader(&mut file);

写入文件

use citi::Record;
use std::fs::File;

let record = Record::default();
let mut file = File::create("file.cti").unwrap();
record.to_writer(&mut file);

lib.rs:

CITI记录的输入/输出

该标准定义了以下实体

名称 描述
记录 记录的全部内容
头部 记录的头部
数据 一个或多个数据数组
关键字 定义头部内容

由于这是一个自定义的ASCII记录类型,因此标准不如人们期望的那样简单。尽可能遵循标准。最大的变化在于关键字的扩展。

非标准类型

添加了非标准的但行业普遍存在的注释部分,格式为感叹号

!COMMENT

这些用于提供内部注释。

IO示例

对象必须实现BufRead特质,因为CITI文件是按行读取的。因此,两次读取将导致第二次读取失败,因为缓冲区为空。

读取文件

use citi::Record;
use std::fs::File;

let mut file = File::open("file.cti").unwrap();
let record = Record::from_reader(&mut file);

写入文件

use citi::Record;
use std::fs::File;

let record = Record::default();
let mut file = File::create("file.cti").unwrap();
record.to_writer(&mut file);

输入/输出一致性

由于设计原因,无法保证CITI记录的通用输入/输出一致性。也就是说,如果读取并写入一个记录,记录的字节表示可能发生变化,精确的浮点表示可能发生变化,但记录将包含相同的信息。以下内容无法保证

  • 浮点数的ASCII表示可能因为字符串 -> 浮点数 -> 字符串转换而改变。
  • 浮点数可能在指数格式中移动。
  • 所有SEG_LIST关键字都将转换为VAR_LIST

依赖项

~2.6–4MB
~76K SLoC