4 个版本 (2 个破坏性更新)
0.3.1 | 2024年7月18日 |
---|---|
0.3.0 | 2024年4月24日 |
0.2.0 | 2024年4月4日 |
0.1.0 | 2024年3月28日 |
#248 in 异步
每月123次下载
61KB
1K SLoC
mikrotik-rs 📟
此Rust库提供了一个与Mikrotik API交互的异步接口。
功能 🌟
- 无安全代码 💥:完全使用安全Rust 🦀 构建
- 零拷贝解析:通过就地解析API响应来避免不必要的内存分配。
- 并发命令 🚦:支持并发运行多个MikroTik命令,每个命令及其响应通过专用通道管理。
- 错误处理 ⚠️:考虑到错误处理,确保网络或解析错误被优雅地处理并向调用者报告。
入门 🚀
要在项目中使用此库,请在项目目录中运行以下命令
cargo add mikrotik-rs
或者,您可以手动将库添加到 Cargo.toml
文件中
[dependencies]
mikrotik-rs = "0.3.0"
tokio = { version = "1", features = ["full"] }
确保您已在项目中设置了Tokio,因为库依赖于Tokio运行时。
基本用法 📖
use mikrotik_rs::{command::CommandBuilder, device::MikrotikDevice};
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize the MikrotikClient 🤖 with the router's address and access credentials
let device = MikrotikDevice::connect("192.168.122.144:8728", "admin", Some("admin")).await?;
// Execute a command 📝
let system_resource_cmd = CommandBuilder::new()
.command("/system/resource/print")
// Send the update response every 1 second
.attribute("interval", Some("1"))
.build();
// Send the command to the device 📡
// Returns a channel to listen for the command's response(s)
let response_channel = device.send_command(system_resource_cmd).await;
// Listen for the command's response 🔊
while let Some(res) = response_channel.recv().await {
println!(">> Get System Res Response {:?}", res);
}
Ok(())
}
文档 📚
有关库API的更多详细信息,请参阅文档。
贡献 🤝
欢迎贡献!无论是提交错误报告 🐛、功能请求 💡 还是拉取请求 🔄,所有贡献都有助于改进此库。在贡献之前,请阅读CONTRIBUTING.md 文件中的指南。
许可 📝
本项目采用MIT许可 - 有关详细信息,请参阅LICENSE 文件。
免责声明 🚫
此库与MikroTik无官方关联。它作为一个开源项目开发,以方便基于Rust的应用程序与MikroTik设备交互。
依赖关系
~3–11MB
~109K SLoC