2个不稳定版本
0.2.0 | 2021年7月8日 |
---|---|
0.1.0 | 2021年7月8日 |
#743 in 数学
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