Maxtron
Maxtron

Reputation: 121

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

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.

Upvotes: 11

Views: 2922

Answers (2)

Błażej Czapp
Błażej Czapp

Reputation: 2633

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().

Upvotes: 4

Ekrem Din&#231;el
Ekrem Din&#231;el

Reputation: 1141

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);
}

Upvotes: 15

Related Questions