下面的Rust代码试图在一个数组中存储一个零参数闭包,并调用函数。
fn main() {
println!("The answer is: {}", solution_fns[0]());
}
const solution_fns: [fn() -> isize] =
[|| (1..=999).filter(|e| divides(3, e) || divides(5, e)).sum()];
fn divides(d: usize, n: usize) -> bool {
n % d == 0
}
链接到 Rust Playground。不幸的是,它不会编译:
错误[E0277]:[fn()-类型值的大小
我知道你不能构造一个在编译时大小未知的数组(或Vec)。但是我理解类型< code>[fn() -
const solution_fns: [Box<fn() -> isize>] = [Box::new(|| {
(1..=999).filter(|e| divides(3, e) || divides(5, e)).sum()
})];
那么,如何存储一系列闭包呢?
如果使用切片,则不必指定大小:
fn main() {
println!("The answer is: {}", SOLVERS[0]());
}
const SOLVERS : &[fn() -> usize] =
&[|| (1..=999).filter(|&e| divides(3, e) || divides(5, e)).sum()];
fn divides(d: usize, n: usize) -> bool {
n % d == 0
}
链接到游乐场。
问题不在于fn指针,而是数组没有大小。只需将预期大小添加到数组声明中即可解决此问题:
const solution_fns: [fn() -> usize; 1] =
[|| (1..=999usize).filter(|&e| divides(3, e) || divides(5, e)).sum()];
游戏场
我有一个,它实现了Futures的特征: 我想把它传递给actix_web的方法。 我认为解决方案是my,但我找不到这样的流方法。 下面是如何使用的示例:
我尝试在我的DB中更新一个表“image”并插入blob类型。 ImageClass: Hibernate用户映射: 利布: 错误:
已挂, 查看状态变更为业务面试-未录用 -------------------------------------------------------- 1. 深挖项目,需要对自己的项目和类似开源项目,用到的框架技术有深入了解 2. Redis 3. MySQL 4. 消息队列 5. GC相关 反问 拷打约50分钟 面试官水平很高,也会根据你的回答引导,可惜自己太菜了,很多没回答上来
Flare objects are the source assets that are used by Lens Flare Components. The Flare itself is a combination of a texture file and specific information that determines how the Flare behaves. Then whe
问题内容: 对于跨进程的数据通信,我打算使用Redis列表。生产者推送到列表,而一组使用者使用BRPOP消费列表内容。 为了限制列表的大小无限增长,我想将列表大小限制为固定值(例如1万个项目)。我很惊讶地没有找到像BLPUSH或BRPUSH这样的等效命令。这是Redis员工故意遗漏的吗? 因此,我假设我必须在推送之前使用Watch / multi创建一个Txn来检查列表大小。这是正确的方法还是可用
本文向大家介绍azure-webjobs 斑点触发,包括了azure-webjobs 斑点触发的使用技巧和注意事项,需要的朋友参考一下 示例 修改Azure存储Blob时触发的一个简单函数示例: