5个版本
0.1.5 | 2023年10月18日 |
---|---|
0.1.4 | 2023年10月18日 |
0.1.3 | 2023年10月16日 |
0.1.2 | 2023年10月16日 |
0.1.1 | 2023年10月3日 |
#403 在 数学
每月 下载 35 次
310KB
3.5K SLoC
摘要
一个工具箱库,包含了一系列有用的Rust小工具,使我们在编写Rust应用程序时生活更轻松。
提供工具
数学
一组在各种DSP和其他应用中使用的有用数学方法
存档
从Tar、Gz和Zip文件中提取文件
最小示例
let archive: PathBuf = std::env::current_exe()
.unwrap()
.parent()
.unwrap()
.join("test_archive.tar.gz");
let file: PathBuf = "treasure.hex".into();
let destination: PathBuf = std::env::current_exe()
.unwrap()
.parent()
.unwrap();
archives::extract_file(archive, ArchiveType::Gz, file, destination).unwrap();
位
在不同原始比特流表示之间进行转换
最小示例
let received_bit_stream: u64 = 0b110101000100111010110;
let bytes = bits::bits_to_vec(received_bit_stream,21);
println!("Received bit stream: {} ", bits::bit_vec_to_hex_string(&bytes));
配置
通过检查更改、更新等来操作INI样式配置文件
最小示例
let mut config_changes = ini_compare(
&old_config_path.to_path_buf(),
&new_config_path.to_path_buf(),
)
.unwrap();
println!("{:#?}", config_changes);
记录器
快速初始化终端和文件记录器。用于将记录打印到记录或stdout(如果没有初始化全局记录器)的宏
最小示例
log_info!("INFO Test TO PRINTLN!");
log_debug!("DEBUG Test TO PRINTLN!");
terminal_logger_init(LevelFilter::Debug);
log_info!("INFO Test TO LOGGER!");
log_debug!("DEBUG Test TO LOGGER!");
路径
在已知或未知路径的目录中搜索特定文件
最小示例
let paths = IncludePathsBuilder::new()
.include_exe_dir()
.include_known("/home/user/")
.include_unknown("utils-box")
.build();
let pattern = "test_*.tar";
let file_found_in = paths.search_glob(pattern);
计时器和时间跟踪器
在二进制文件中的不同点跟踪执行时间。打印记录。
最小示例
let mut s = TimeKeeper::init();
let mut t = TimeKeeper::init();
s.totals();
s.lap("init");
for _ in 0..5 {
std::thread::sleep(Duration::from_millis(5));
s.lap("loop");
t.lap("loop");
}
s.lap_totals("loop");
std::thread::sleep(Duration::from_millis(1234));
s.lap("after");
s.totals();
t.totals();
s.merge(t);
s.totals();
版本
使用semver.org
表示法从字符串中解析版本
最小示例
let version = "0.9.2-1e341234";
let mut expected = Version::new(0, 9, 2);
expected.pre = Prerelease::new("1e341234").unwrap();
assert_eq!(semver_parse(version).unwrap(), expected);
SSH客户端
通过SSH连接到服务器以执行命令、上传和下载文件
最小示例
let ssh = SshClient::local("user".to_string(), "1234".to_string()).unwrap();
let stdout = ssh.execute_cmd("ls").unwrap();
println!("{:?}", stdout);
TCP客户端
通过TCP连接到套接字以发送和接收数据
最小示例
let mut tcp_client = TcpClient::new("192.168.1.17".to_string(), 36457)?;
let data: Vec<u8> = vec![8, 30, 15, 30, 5, 19, 0, 7];
tcp_client.send(&data)?;
// Block and wait for response
let resp = tcp_client.receive()?;
println!("{:?}", resp);
TCP客户端
通过UDP连接到套接字以发送和接收数据
最小示例
let mut udp =
UdpClient::new("0.0.0.0".to_string(), "192.168.1.31".to_string(), 6123).unwrap();
udp.send(b"\r").unwrap();
// Block and wait for response
let data = udp.receive().unwrap();
println!("{:?} => {}", data, String::from_utf8_lossy(&data));
ZMQ客户端
连接到ZMQ服务器以发送和接收数据
最小示例
let zmq_client = ZmqClient::new(("192.168.1.17".to_string(), 36457)?;
let data: Vec<u8> = vec![8, 30, 15, 30, 5, 19, 0, 7];
zmq_client.send(&data)?;
// Block and wait for response
let resp = zmq_client.receive()?;
println!("{:?}", resp);
依赖项
~20–37MB
~602K SLoC