diff --git a/lib/std/ascii.zig b/lib/std/ascii.zig index d5b028500f..7b99f6f4cf 100644 --- a/lib/std/ascii.zig +++ b/lib/std/ascii.zig @@ -182,20 +182,14 @@ pub const isASCII = isAscii; /// Uppercases the character and returns it as-is if already uppercase or not a letter. pub fn toUpper(c: u8) u8 { - if (isLower(c)) { - return c & 0b11011111; - } else { - return c; - } + const mask = @as(u8, @intFromBool(isLower(c))) << 5; + return c ^ mask; } /// Lowercases the character and returns it as-is if already lowercase or not a letter. pub fn toLower(c: u8) u8 { - if (isUpper(c)) { - return c | 0b00100000; - } else { - return c; - } + const mask = @as(u8, @intFromBool(isUpper(c))) << 5; + return c | mask; } test "ASCII character classes" {