Skip to content

Commit 3a659b9

Browse files
committed
refactor(test_suite): use Range: const Iterator and const_for
1 parent 53856eb commit 3a659b9

File tree

6 files changed

+14
-20
lines changed

6 files changed

+14
-20
lines changed

src/r3_test_suite/src/kernel_benchmarks/timer_start.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ impl<System: SupportedSystem> AppInner<System> {
4141
let timers = {
4242
let mut timers = MaybeUninit::uninit_array();
4343

44-
let mut i = 0;
45-
// `for` is unusable in `const fn` [ref:const_for]
46-
while i < timers.len() {
44+
// `[T]::iter_mut` is unusable in `const fn` [ref:const_slice_iter]
45+
// `core::array::from_fn` is not `const fn` [ref:const_array_from_fn]
46+
for i in 0..timers.len() {
4747
timers[i] = MaybeUninit::new(StaticTimer::define().start(|| {}).finish(b));
48-
i += 1;
4948
}
5049

5150
unsafe { MaybeUninit::array_assume_init(timers) }

src/r3_test_suite/src/kernel_tests/compute_atomics_round_robin.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,17 +143,16 @@ impl<System: SupportedSystem> App<System> {
143143

144144
let mut tasks = [None; NUM_TASKS];
145145

146-
// `for` is unusable in `const fn` [ref:const_for]
147-
let mut i = 0;
148-
while i < NUM_TASKS {
146+
// `[T]::iter_mut` is unusable in `const fn` [ref:const_slice_iter]
147+
// `core::array::from_fn` is not `const fn` [ref:const_array_from_fn]
148+
for i in 0..NUM_TASKS {
149149
tasks[i] = Some(
150150
StaticTask::define()
151151
.active(true)
152152
.start((i, worker_body::<System, D>))
153153
.priority(2)
154154
.finish(b),
155155
);
156-
i += 1;
157156
}
158157

159158
// `<[_; 2]>::map` is unusable in `const fn` [ref:const_array_map]

src/r3_test_suite/src/kernel_tests/compute_round_robin.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ impl<System: SupportedSystem> App<System> {
6363

6464
let mut tasks = [None; NUM_TASKS];
6565

66-
// `for` is unusable in `const fn` [ref:const_for]
67-
let mut i = 0;
68-
while i < NUM_TASKS {
66+
// `[T]::iter_mut` is unusable in `const fn` [ref:const_slice_iter]
67+
// `core::array::from_fn` is not `const fn` [ref:const_array_from_fn]
68+
for i in 0..NUM_TASKS {
6969
let task_state = if i == 0 {
7070
// Reuse the storage
7171
task_state.borrow_mut()
@@ -88,7 +88,6 @@ impl<System: SupportedSystem> App<System> {
8888
.priority(3)
8989
.finish(b),
9090
);
91-
i += 1;
9291
}
9392

9493
// `<[_; 4]>::map` is unusable in `const fn` [ref:const_array_map]

src/r3_test_suite/src/kernel_tests/time_stress.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,12 @@ impl<System: SupportedSystem> App<System> {
2323
where
2424
C: ~const traits::CfgTask<System = System> + ~const traits::CfgEventGroup,
2525
{
26-
let mut i = 0;
27-
// `for` is unusable in `const fn` [ref:const_for]
28-
while i < TASKS.len() {
26+
for i in 0..TASKS.len() {
2927
StaticTask::define()
3028
.start((i, task_body::<System, D>))
3129
.priority(0)
3230
.active(true)
3331
.finish(b);
34-
i += 1;
3532
}
3633

3734
StaticTask::define()

src/r3_test_suite/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#![feature(const_fn_floating_point_arithmetic)]
33
#![feature(const_maybe_uninit_uninit_array)]
44
#![feature(maybe_uninit_array_assume_init)]
5+
#![feature(const_intoiterator_identity)]
56
#![feature(maybe_uninit_uninit_array)]
67
#![feature(cfg_target_has_atomic)]
78
#![feature(const_transmute_copy)]
@@ -12,7 +13,9 @@
1213
#![feature(array_windows)]
1314
#![feature(const_option)]
1415
#![feature(cell_update)]
16+
#![feature(const_iter)]
1517
#![feature(decl_macro)]
18+
#![feature(const_for)]
1619
#![feature(is_sorted)]
1720
#![deny(unsafe_op_in_unsafe_fn)]
1821
#![allow(clippy::eq_op)] // we want to test `PartialEq` implementations

src/r3_test_suite/src/utils/trig.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,13 @@ pub const fn sincos(theta: f64) -> (f64, f64) {
4646
let mut x = 1.0;
4747
let mut y = 0.0;
4848

49-
// `for` is unusable in `const fn` [ref:const_for]
50-
let mut i = 0;
51-
while i < 32 {
49+
for i in 0..32 {
5250
if (theta_i & (1u32 << i)) != 0 {
5351
let (x2, y2) = (x, y);
5452
let (sin, cos) = TABLE[i];
5553
x = x2 * cos - y2 * sin;
5654
y = x2 * sin + y2 * cos;
5755
}
58-
i += 1;
5956
}
6057

6158
if neg {

0 commit comments

Comments
 (0)