Python's chr() and ord() in Rust

2.3k Views Asked by At

In Python you can convert an integer into a character and a character into an integer with ord() and chr():

>>>a = "a"
>>>b = ord(a) + 1
>>>b = chr(b)

I am looking for a way to do the same thing in Rust, but I have found nothing similar yet.

2

There are 2 best solutions below

1
On BEST ANSWER

You can use the available Into and TryInto implementations:

fn main() {
    let mut a: char = 'a';
    let mut b: u32 = a.into(); // char implements Into<u32>
    b += 1;
    a = b.try_into().unwrap(); // We have to use TryInto trait here because not every valid u32 is a valid unicode scalar value
    println!("{}", a);
}
0
On

ord can be done using the as keyword:

let c = 'c';
assert_eq!(99, c as u32);

While chr using the char::from_u32() function:

let c = char::from_u32(0x2728);
assert_eq!(Some('✨'), c);

Note that char::from_u32() returns an Option<char> in case the number isn't a valid codepoint. There's also char::from_u32_unchecked().