From 2d6af9b5df892eac749f1703738356344c35452d Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 11 Mar 2017 18:02:11 -0500 Subject: [PATCH] make `logical` non-`const`, check input using assertions --- src/lib.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 353d630e1e..6fcbdeddc0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -249,15 +249,11 @@ unsafe impl Sync for Resource {} /// priorities encode the actual priority in the highest bits of a byte so /// priorities like `1` and `2` aren't actually different) /// -/// NOTE `logical` must be in the range `[1, 15]` (inclusive) -pub const fn logical(priority: u8) -> u8 { - // NOTE elements 1 and 2 of the tuple are a poor man's const context range - // checker - (((1 << PRIORITY_BITS) - priority) << (8 - PRIORITY_BITS), - priority - 1, - priority + 240) - .0 +/// NOTE Input `priority` must be in the range `[1, 16]` (inclusive) +pub fn logical(priority: u8) -> u8 { + assert!(priority >= 1 && priority <= 16); + ((1 << PRIORITY_BITS) - priority) << (8 - PRIORITY_BITS) } /// Fake ceiling, indicates that the resource is shared by cooperative tasks