Rust 嵌入式铁锈发现书示例无法编译

Rust 嵌入式铁锈发现书示例无法编译,rust,embedded,Rust,Embedded,我不熟悉生锈和嵌入式系统。我正在阅读并继续阅读“”,但我似乎无法找出下面的错误 我已将其放入我的main.rs: #![拒绝(不安全代码)] #![无主] #![无标准] 使用aux5::{entry,prelude::*,Delay,led}; #[条目] fn main()->!{ let(mut-delay,mut-led):(delay,led)=aux5::init(); 设半周期=500μ16; 环路{ 发光二极管[0]。在()上; 延迟。延迟(半个周期); 发光二极管[0]。关闭(

我不熟悉生锈和嵌入式系统。我正在阅读并继续阅读“”,但我似乎无法找出下面的错误

我已将其放入我的
main.rs

#![拒绝(不安全代码)]
#![无主]
#![无标准]
使用aux5::{entry,prelude::*,Delay,led};
#[条目]
fn main()->!{
let(mut-delay,mut-led):(delay,led)=aux5::init();
设半周期=500μ16;
环路{
发光二极管[0]。在()上;
延迟。延迟(半个周期);
发光二极管[0]。关闭();
延迟。延迟(半个周期);
}
}
我的辅助
lib.rs
包含:

pub使用stm32f3_发现:{led::led,stm32f3xx_-hal,switch_-hal};
pub-use-switch_-hal:{ActiveHigh,OutputSwitch,switch,togleableoutputswitch};
使用stm32f3xx_hal::前奏::*;
发布使用stm32f3xx_hal::{
耽搁,耽搁,
gpio::{gpioe,输出,推拉},
hal::blocking::delay::DelayMs,
stm32,
};
发布类型LedArray=[开关;8];
pub fn init()->(延迟,LedArray){
让设备_periphs=stm32::Peripherals::take().unwrap();
让mut reset_和_clock_control=device_periphs.RCC.constraint();
让core_periphs=cortex_m::Peripherals::take().unwrap();
让mut flash=device_periphs.flash.constraint();
让时钟=重置和时钟控制.cfgr.freeze(&mut flash.acr);
let delay=延迟::新(核心外围系统、时钟);
//初始化用户指示灯
让mut gpioe=设备外围设备.gpioe.split(&mut reset_和_clock_control.ahb);
让LED=LED::新建(
gpioe.pe8,
gpioe.pe9,
gpioe.pe10,
gpioe.pe11,
gpioe.pe12,
gpioe.pe13,
gpioe.pe14,
gpioe.pe15,
&mut gpioe.moder,
&mut gpioe.otyper,
);
(延迟,LED.进入_阵列())
}
我没有在
lib.rs
中更改任何内容,我将跟随书中的内容,以及

为目标生成时,运行代码会导致以下错误:

错误[E0432]:未解析的导入`aux5::prelude`
-->src\05 led轮盘赌\src\main.rs:5:19
|
5 |使用aux5::{进入,前奏::*,延迟,LED};
|^^^^^^^在“aux5”中找不到“prelude”`
错误[E0308]:类型不匹配
-->src\05 led轮盘赌\src\main.rs:9:48
|
9 | let(mut delay,mut led):(delay,led)=aux5::init();
|--------------应为结构“Leds”,找到了包含8个元素的数组
|                                |
|因此,预计
|
=注意:应为元组“”(延迟,LED)`
找到元组“”(延迟,[Switch;8])`
错误[E0608]:无法索引为'Leds'类型的值`
-->src\05 led轮盘赌\src\main.rs:14:9
|
14个发光二极管[0]。开启();
|         ^^^^^^^
错误[E0599]:在当前作用域中找不到结构'delay'的名为'delay_ms'的方法
-->src\05 led轮盘赌\src\main.rs:15:15
|
15延迟。延迟毫秒(半个周期);
|在'Delay'中找不到^`
|
=帮助:仅当特征在范围内时,才能使用特征中的项
帮助:以下特性已实现,但不在范围内;或许可以为它添加一个“use”:
|
5 |使用aux5::DelayMs;
|
错误[E0608]:无法索引为'Leds'类型的值`
-->src\05 led轮盘赌\src\main.rs:17:9
|
17个发光二极管[0]。关闭();
|         ^^^^^^^
错误[E0599]:在当前作用域中找不到结构'delay'的名为'delay_ms'的方法
-->src\05 led轮盘赌\src\main.rs:18:15
|
18延迟。延迟毫秒(半个周期);
|在'Delay'中找不到^`
|
=帮助:仅当特征在范围内时,才能使用特征中的项
帮助:以下特性已实现,但不在范围内;或许可以为它添加一个“use”:
|
5 |使用aux5::DelayMs;
|
错误:由于之前的6个错误而中止
一些错误有详细的解释:E0308、E0432、E0599、E0608。
有关错误的详细信息,请尝试“rustc--explain E0308”。
错误:无法编译“led轮盘赌”`
要了解更多信息,请使用--verbose再次运行该命令。
从下一页看,这似乎是您需要的导入集

使用aux5::{entry,Delay,DelayMs,LedArray,OutputSwitch};
在上述抽象中,与您的
main.rs
相比,请注意:

  • 添加trait,使
    .delay\ms()
    可用
  • 删除未使用的
    前奏曲
  • 从更改为预期
另见:


非常感谢您。如果我再打开两个md文件,我会发现它@iam ankit,很高兴能帮上忙。我也看了这本书,它非常有趣,您可以通过单击复选标记将问题标记为已回答。