# dev-tool
## 介绍
dev-tool 是一个Rust工具包类库,对文件、加密解密、正则等方法进行封装,组成各种Util工具类。
## 模块说明
- conf_util 读取配置文件
- date_util 日期及时间工具
- file_util 文件操作工具
- stream_util 流操作工具(TODO)
- io_util io工具(TODO)
- log_util 日志工具
- mysql_util MySQL数据库操作工具(TODO)
- re_util工具 正则工具
- secure_util 常规加解密工具,含摘要算法等处理
- thread_util 线程工具
- sqlite_util SQLite数据库操作工具
### conf_util 配置使用说明
当前只实现json,后续再添加yaml支持,作为配置使用,用户是知道配置了什么内容的,当多层配置时,可以直接通过x.y.z.w方式直接对应的数据,具体使用如下:
特别注意:不管是对象,还是数组,都是直接通过点操作的,如 obj.children.name, 其中obs是对象,children是一个数组,name是children中对象的一个属性,当obj.children.name获取的是children数组中所有对象的name值
```rust
use dev_tool::JsonWrapper;
#[test]
fn test_json_util() {
let json_wrapper = JsonWrapper::new("docs/config.json").unwrap();
let x = json_wrapper.get("name");
// name = [String("Alice")]
println!("name = {:?}", x);
let x = json_wrapper.get("age");
// age = [Number(30)]
println!("age = {:?}", x);
let x = json_wrapper.get("is_student");
// is_student = [Bool(false)]
println!("is_student = {:?}", x);
let x = json_wrapper.get("hobbies");
// hobbies = [Array [String("reading"), String("swimming"), String("cooking")]]
println!("hobbies = {:?}", x);
let x = json_wrapper.get("address");
// address = [Object {"children": Array [Object {"age": Number(5), "name": String("r")}, Object {"age": Number(6), "name": String("s")}], "city": String("New York"), "releases": Array [String("v1"), String("v2")], "state": String("NY"), "street": String("123 Main St"), "x": Object {"y": String("hello, json!")}, "zip": String("10001")}]
println!("address = {:?}", x);
let x = json_wrapper.get("address.street");
// address.street = [String("123 Main St")]
println!("address.street = {:?}", x);
let x = json_wrapper.get("address.releases");
// address.releases = [Array [String("v1"), String("v2")]]
println!("address.releases = {:?}", x);
let x = json_wrapper.get("address.x.y");
// address.x.y = [String("hello, json!")]
println!("address.x.y = {:?}", x);
// 注意: 这里面的children是一个数组,不管是数组还是对象,都是通过点来操作
let x = json_wrapper.get("address.children.name");
// address.children.name = [String("r"), String("s")]
println!("address.children.name = {:?}", x);
println!("=============================================================");
// 作为配置使用,正常是知晓需要
let x = json_wrapper.get_one("address.x.y").as_str().unwrap();
// address.x.y = hello, json!
println!("address.x.y = {}", x);
}
```
## 安装教程
```bash
cargo add dev-tool
```
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)