Skip to content

Commit 8a17d27

Browse files
committed
refactor(port_arm): use Range: const Iterator and const_for
1 parent 51beb4e commit 8a17d27

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

src/r3_port_arm/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#![feature(const_intoiterator_identity)]
12
#![feature(const_refs_to_cell)]
23
#![feature(generic_arg_infer)]
34
#![feature(const_trait_impl)]
@@ -6,8 +7,10 @@
67
#![feature(slice_ptr_get)]
78
#![feature(slice_ptr_len)]
89
#![feature(lint_reasons)]
10+
#![feature(const_iter)]
911
#![feature(decl_macro)]
1012
#![feature(asm_const)]
13+
#![feature(const_for)]
1114
#![deny(unsafe_op_in_unsafe_fn)]
1215
#![allow(clippy::verbose_bit_mask)] // questionable
1316
#![cfg_attr(

src/r3_port_arm/src/startup/imp.rs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -295,16 +295,13 @@ impl<T: StartupOptions + EntryPoint> StartupExt for T {
295295

296296
// Create section entries based on `MEMORY_MAP`
297297
let mmap = Self::MEMORY_MAP;
298-
// `for` is unusable in `const fn` [ref:const_for]
299-
let mut i = 0;
300-
while i < mmap.len() {
298+
// `[T]::iter` is unusable in `const fn` [ref:const_slice_iter]
299+
for i in 0..mmap.len() {
301300
let section = &mmap[i];
302301
let start_i = section.virtual_start / 0x100000;
303302
let end_i = start_i + section.len / 0x100000;
304303

305-
// `for` is unusable in `const fn` [ref:const_for]
306-
let mut k = start_i;
307-
while k < end_i {
304+
for k in start_i..end_i {
308305
if occupied[k] {
309306
panic!("region overlap; some address ranges are specified more than once");
310307
}
@@ -313,10 +310,7 @@ impl<T: StartupOptions + EntryPoint> StartupExt for T {
313310
section.attr,
314311
);
315312
occupied[k] = true;
316-
k += 1;
317313
}
318-
319-
i += 1;
320314
}
321315

322316
table
@@ -325,14 +319,12 @@ impl<T: StartupOptions + EntryPoint> StartupExt for T {
325319

326320
const fn memory_map_maps_va<T: StartupOptions>(va: usize) -> bool {
327321
let mmap = T::MEMORY_MAP;
328-
// `for` is unusable in `const fn` [ref:const_for]
329-
let mut i = 0;
330-
while i < mmap.len() {
322+
// `[T]::iter` is unusable in `const fn` [ref:const_slice_iter]
323+
for i in 0..mmap.len() {
331324
let section = &mmap[i];
332325
if va >= section.virtual_start && va <= section.virtual_start + (section.len - 1) {
333326
return true;
334327
}
335-
i += 1;
336328
}
337329
false
338330
}

0 commit comments

Comments
 (0)