#macro #async #synchronous #builder #ff #func #sync

过程宏 flexi_func

一个Rust包,通过两个强大的宏:ff(Flexi Func)和fb(Flexi Block)或(函数构建器)🛠️来提升你的Rust编程体验。这些宏旨在简化并增强你编写同步和异步代码的方式,让你的Rust之旅更加顺畅和高效。

9个版本

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

#434 in 过程宏

Download history

每月 57 次下载

MIT 许可证

11KB

📦 Flexi Func 🚀

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

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

🎁 特性

  • ff(Flexi Func):使用此过程宏首先标记你的异步函数,可选的自定义错误处理🌟。
  • fb!(Flexi Block)(函数构建器):在同步函数内,使用fb!声明性宏编写你的(syncasync)版本。
  • fb!减少条件函数生成的样板代码🔄。

🚀 入门

要开始在项目中使用flexi_func,请将其添加到你的Cargo.toml

[dependencies]
flexi_func = "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 许可证,促进开放合作和创新。

依赖项

~1.5MB
~36K SLoC