8个版本
0.3.3 | 2023年11月13日 |
---|---|
0.3.2 | 2023年5月18日 |
0.3.0 | 2022年1月14日 |
0.2.2 | 2021年7月26日 |
0.1.0 | 2021年7月18日 |
#766 in 编码
38KB
563 行
=bcheck=
'''作者:''' Bryce Campbell
'''许可证:''' 请参阅LICENSE
'''描述:''' 一个Rust的crate,允许用户读取和写入由BCheckbook生成的bcheck文件。
'''版本:''' 0.3.3
==注意==
此crate已在macOS上的Rust 1.59.0和Windows上的Rust上进行了测试。不知道它是否会在更早的版本中工作,尽管如果依赖项也向后兼容,它应该会。
===创建此库的原因===
在制作了一个可以作为账本的应用程序之后,我想创建一种在Rust中读取和写入保存的方法,这样我就可以创建除macOS和iOS以外的应用程序,并学习更多关于serde的知识,看看我是否可以像在Swift中使用Codable一样定制序列化和反序列化,并希望节省他人查找正确读取这些文件的时间。
由于当前Rust的GUI编程状态以及我在iOS上遇到的问题,我可能需要一段时间才能实际使用此代码,但应该非常有用。
===版本历史===
- 0.1
- 首次发布。发布于2021年7月18日
- 0.2
-
使创建记录对象更容易,这样就不需要暴露依赖项,并删除不需要的重新导出。
发布于2021年7月19日
- 0.2.1
-
使从字符串中解析交易类型成为可能。发布于2021年7月23日
- 0.2.2
-
添加扩展trait,为String和str添加方法以简化日期获取。发布于2021年7月26日
- 0.3
-
更新交易模型以反映bcheck格式的当前状态。
发布于2022年1月13日
- 0.3.1
-
添加TSV导入和导出支持,通过实现使用制表符分隔的字符串创建项的方法。
发布于2023年5月17日
- 0.3.2
-
修复TSV支持,由于找不到方法。
发布于2023年5月18日
- 0.3.3
-
修复文档并确保TSV支持按预期运行。
请注意,单元测试可能需要运行两次,因为如果没有文件,TSV读取测试会失败,并且测试是随机完成的。
发布于2023年11月13日
===用法===
要使用此库,请将以下内容添加到您的 Cargo.toml 文件中
[dependencies] bcheck = "0.3"
之后,如果您只需要Record类型,可以像这样简单使用
use bcheck::Record;
在需要时还可以使用其他两个类型,它们是 Transaction 和 TransactionType。
这三个应该提供解析 bcheck 文件所需的一切,并在代码中对它们进行操作。
====保存数据====
要保存数据,除了 Record 类型外,还需要导入 Save 特性,这将为类型 Vec 的向量启用保存方法。
可以这样操作
use bcheck::{ Record, Save }
之后,可以这样调用
let records = vec![Record::new()]; if let Err(error) = records.save("/Users/bob/Documents/example.bcheck") { println!("{}", error) }
TSV 数据可以通过使用 save_tsv() 方法来保存,与上面看到的方法类似。
====加载数据====
要加载数据,只需要加载记录类型并使用以下方法之一
if let Ok(records) = Record::from_file("/Users/bob/Documents/example.bcheck") { print!("{}", records[0]) }
这将从 JSON 文件中加载。
if let Ok(records) = Record::from_tsv_file("/Users/bob/Documents/example.bcheck") { print!("{}", records[0]) }
这将从 TSV 文件中加载记录。
请注意,TSV 支持是以期望总共有 9 列的方式编写的,尽管某些字段可以为空。
因此,建议您在 MS Excel 或 LibreOffice 中生成 TSV,以便您可以验证是否具有适当的标签数量。
===创建日期对象===
如果您导入了 LocalDateTimeStringExt 特性,日期可以创建如下所示
"2021-7-26".local_dateime().unwrap()
===贡献===
如果您认为可以帮助改进这个项目,请随时fork此项目并提交拉取请求。
类似于 BCheckbook 程序,我将测试这些更改,看看它们是否按预期工作。
===支持===
由于我的 Rust 经验有限,与我的 Rust 经验相比,我无法提供太多支持,因此请自行处理。
然而,我可以尝试解决问题,因此请随时通过以下电子邮件联系我
依赖项
~4–6.5MB
~115K SLoC