Skip to content

Commit 53856eb

Browse files
committed
refactor(port_arm_m): use Range: const Iterator and const_for
1 parent 8a17d27 commit 53856eb

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/r3_port_arm_m/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1+
#![feature(const_intoiterator_identity)]
12
#![feature(generic_const_exprs)]
23
#![feature(const_refs_to_cell)]
34
#![feature(const_trait_impl)]
45
#![feature(naked_functions)]
56
#![feature(const_mut_refs)]
67
#![feature(slice_ptr_get)]
78
#![feature(slice_ptr_len)]
9+
#![feature(const_iter)]
810
#![feature(decl_macro)]
911
#![feature(asm_const)]
12+
#![feature(const_for)]
1013
#![deny(unsafe_op_in_unsafe_fn)]
1114
#![cfg_attr(
1215
feature = "doc",

src/r3_port_arm_m/src/rt/imp.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,19 @@ pub type InterruptHandlerTable = [InterruptHandler; NUM_INTERRUPTS];
1515
/// Used by `use_port!`
1616
pub const fn make_interrupt_handler_table<Traits: KernelTraits>() -> InterruptHandlerTable {
1717
let mut table = [InterruptHandler { undefined: 0 }; NUM_INTERRUPTS];
18-
let mut i = 0;
1918

20-
// `for` is unusable in `const fn` [ref:const_for]
21-
while i < table.len() {
19+
// `[T]::iter_mut` is unusable in `const fn` [ref:const_slice_iter]
20+
// `core::array::from_fn` is not `const fn` [ref:const_array_from_fn]
21+
for i in 0..table.len() {
2222
table[i] = if let Some(x) = Traits::INTERRUPT_HANDLERS.get(i + 16) {
2323
InterruptHandler { defined: x }
2424
} else {
2525
InterruptHandler { undefined: 0 }
2626
};
27-
i += 1;
2827
}
2928

3029
// Disallow registering in range `0..16` except for SysTick
31-
i = 0;
32-
// `for` is unusable in `const fn` [ref:const_for]
33-
while i < 16 {
30+
for i in 0..16 {
3431
if i != INTERRUPT_SYSTICK {
3532
// TODO: This check trips even if no handler is registered at `i`
3633
#[cfg(any())]
@@ -40,7 +37,6 @@ pub const fn make_interrupt_handler_table<Traits: KernelTraits>() -> InterruptHa
4037
disallowed except for SysTick"
4138
);
4239
}
43-
i += 1;
4440
}
4541

4642
table

0 commit comments

Comments
 (0)