Rust 编程:闭包、宏与元编程
闭包返回类型问题与解决
在 Rust 编程中,有时会遇到闭包返回类型的错误。例如出现 error[E0277]: the trait bound std::ops::Fn(i32) -> i32 + ‘static: std::marker::Sized is not satisfied 这样的错误,这是因为 Rust 编译器不知道存储闭包需要多少空间。
下面是错误示例代码:
fn returns_closure() -> Fn(i32) -> i32 {
// 这里会报错,因为编译器无法确定闭包大小
}
解决办法是使用 trait 对象,通过 Box 来包装闭包,示例代码如下:
fn returns_closure() -> Box<dyn Fn(i32) -> i32> {
Box::new(|x| x + 1)
}
这样代码就能正常编译了。
宏的概念与作用
宏在 Rust 中是一种强大的工具,本质上宏是一种元编程方式,即编写能生成其他代码的代码。在 Rust 里,宏主要分为两类:声明式宏(使用 macro_rules! )和三种过程式宏(自定义 #[derive] 宏、类属性宏、类函数
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



