#macro #asynchronous-programming #declarative-macro #synchronous #flexible #sync #generate

flexi_func_declarative

此包公开了 fb! 宏,用于创建具有灵活签名的函数。

6 个版本

0.2.7 2024 年 2 月 11 日
0.2.6 2024 年 2 月 11 日
0.1.0 2024 年 2 月 11 日

#320 in 解析器工具


用于 flexi_func

MIT 许可证

10KB

📦 Flexi Func Declarative 🚀

欢迎来到 Flexi Func Declarative - 一个旨在通过两个强大的宏(ff(Flexi Func)和 fb(Flexi Block)或(函数构建器))提升你的 Rust 编程体验的 Rust 包 🛠️。

这些宏旨在简化并增强你编写同步和异步代码的方式,使你的 Rust 之旅更加顺畅和高效。

🎁 功能

  • fb!(Flexi Block)或(函数构建器):在同步函数中,使用 fb! 写下你的(syncasync)版本
  • fb! 减少了条件函数生成的样板代码 🔄。

🚀 入门

此包旨在与 flexi_func 包一起使用和补充。要在你的项目中开始使用 flexi_func,请将其添加到你的 Cargo.toml

[dependencies]
flexi_func_declarative = "0.2.7"

然后,在你的 Rust 文件中导入宏

use flexi_func::{ff, fb};

💻 使用

🛠 ff - Flexi Func

ff 宏简化了同步和异步函数变体的创建,包括可定制的错误处理。

基本示例

#[ff]
fn compute(data: Vec<u8>) -> Result<usize, MyError> {
    // Your synchronous code here
}

这将在原始的 compute 函数旁边生成异步版本 compute_async
如果你需要在同步函数内部指定代码的异步版本,请使用 fb! 声明性宏。

🐞 自定义错误类型

#[ff(error_type = "MyCustomError")]
fn process(data: Vec<u8>) -> Result<usize, MyCustomError> {
    // Your code here
}

🔄 fb! - Flexi Block 或函数构建器

使用 fb! 丰富你的 Rust 工具箱,这是一个灵活的宏,旨在动态生成同步和异步函数或代码块。此宏旨在最小化冗余并提高代码清晰度,提供一种无缝的方式来构建可适应的代码结构。

✅ 同步函数

轻松创建同步函数

fb!(sync, greet, (name: String), -> String, {
    format!("Hello, {}", name)
});

⚡ 异步函数

为需要等待的操作生成异步函数

fb!(async, fetch_data, (url: String), -> Result<String, reqwest::Error>, {
    // Async fetch operation
});

🔄 返回闭包

在需要捕获周围环境或延迟执行的场景中

  • 异步闭包
let async_closure = fb!(async, closure, {
    // Async code here
});
// Usage
async_closure().await;
  • 同步闭包
let sync_closure = fb!(sync, closure, {
    // Sync code here
});
// Usage
sync_closure();

🚀 立即执行

立即执行代码块,无需定义单独的函数

  • 异步块
let result = fb!(async, execute, {
    // Immediate async execution
});
// Await the block if necessary
result.await;
  • 同步块
fb!(sync, execute, {
    // Immediate sync execution
});

💡 高级技巧

  • 利用 fb! 进行条件编译,动态生成同步或异步函数,使您的代码更符合应用需求 🎛️。
  • 通过将 fb! 与 Rust 的强大错误处理功能相结合,增强异步操作中的错误管理 🚦。

🐳 贡献

我们欢迎对 fb! 的改进。如果您有兴趣增强其功能或提出建议,请随时提交问题或拉取请求 🤝。您的反馈对改进此工具至关重要。

📃 许可证

本项目采用 MIT 许可证,鼓励开放协作和创新。

无运行时依赖