无法运行功能模块时;fn main()->!{..}"



在这里学习一些Rust。。

我可以在命令行上做到这一点!

// main.rs ------------
mod attach;
fn main(){
attach::dothings();
}
// attach.rs ------------
use std::{thread, time};
pub fn dothings(){
let mut cnt = 1;
loop {
// !I could blink a led here or read a sensor!
println!("doing things {} times", cnt);
thread::sleep(time::Duration::from_secs(5));
cnt = cnt +1;
if cnt == 5 {break;}
}
}

但在进行嵌入式操作时,main不能返回任何

fn main() -> ! {...}

使用类似代码时!我犯了这个错误。(?隐式返回为((?(

| -------- implicitly returns `()` as its body has no tail or `return`
9 | fn main() -> ! {
|              ^ expected `!`, found `()` 

你知道怎么修吗?

为了使main使用类型-> !进行编译,必须知道主体不返回——在这种情况下,主体是attach::dothings();。您需要给dothings相同的返回类型:

pub fn dothings() -> ! { ... }

您还需要不break循环,因为否则它就不是一个无限循环。这个版本会死机,你可能也不希望你的嵌入式代码这样做,但它确实编译了:


pub fn dothings() -> ! {
let mut cnt = 1;
loop {
println!("doing things {} times", cnt);
thread::sleep(time::Duration::from_secs(5));
cnt = cnt +1;
if cnt == 5 {
todo!("put something other than break here");
}
}
}

相关内容

  • 没有找到相关文章

最新更新