Avatar ·

Como converter um caractere char em um número int em Rust, de modo que '1' se torne 1?

Olá a todos! Comecei a estudar Rust recentemente e me deparei com uma tarefa simples, à primeira vista. Preciso ler um caractere de uma string e convertê-lo em um número inteiro. Por exemplo, tenho a string "123" e quero percorrê-la em um loop, pegar cada caractere ('1', '2', '3') e transformá-lo no número inteiro correspondente (1, 2, 3).\n\nEm outras linguagens, como Python ou JavaScript, isso é feito de forma muito simples: `int('1')` ou `parseInt('1')`. Mas em Rust não consigo encontrar um análogo direto. Tentei escrever o seguinte código:\n\n```rust\nfn main() {\n let c: char = '1';\n let n: i32 = c as i32; // tentativa 1\n println!("{}", n);\n}\n```\n\nMas isso imprime 49, e não 1. Entendo que 49 é o código ASCII do caractere '1'. Como obter corretamente o valor numérico do dígito, e não o seu código? Preciso de uma solução que funcione com qualquer dígito de '0' a '9'. De preferência, que seja idiomática para Rust e não contenha código unsafe. Desde já, obrigado pela ajuda!\n<<>>\n

Conversão correta