Menu
Coddy logo textTech

Parsing de Strings para Números

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 47 de 66.

Uma das aplicações mais comuns do mundo real do Result é a conversão de strings em números. Em Rust, isso é feito usando o método .parse(), que demonstra perfeitamente por que o Result existe - porque o parsing pode falhar.

O método .parse() tenta converter uma string em um número, mas nem toda string representa um número válido. Por exemplo, "42" pode ser analisado para o número 42, mas "hello" não pode ser convertido em nenhum número:

let valid_number = "42";
let invalid_number = "hello";

let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();

Quando o parsing é bem-sucedido, .parse() retorna Ok(number) contendo o valor convertido. Quando falha, ele retorna Err(error) com informações sobre o motivo da falha no parsing. Isso força você a lidar com ambas as possibilidades explicitamente, evitando que seu programa trave com uma entrada inválida.

Você pode lidar com o resultado do parsing usando qualquer uma das técnicas Result que você aprendeu - match para tratamento explícito, unwrap() se você tiver certeza de que terá sucesso, ou o operador ? para propagar erros.

challenge icon

Desafio

Fácil

Escreva uma função parse_to_integer que recebe uma string input e retorna o valor inteiro convertido. Se a string não puder ser convertida em um inteiro válido, retorne 0 como valor padrão.

Use o método .parse() para converter a string em um i32, e trate o Result adequadamente para fornecer um valor de retorno seguro.

Parâmetros:

  • input (String): A string a ser convertida em um inteiro

Retorna: O inteiro convertido se for bem-sucedido, ou 0 se a conversão falhar (i32)

Folha de consulta

O método .parse() converte uma string em um número e retorna um tipo Result porque o parsing pode falhar:

let valid_number = "42";
let invalid_number = "hello";

let result1: Result<i32, _> = valid_number.parse();
let result2: Result<i32, _> = invalid_number.parse();

Quando o parsing é bem-sucedido, o .parse() retorna Ok(number). Quando ele falha, retorna Err(error).

Você pode lidar com os resultados do parsing usando match, unwrap(), o operador ? ou unwrap_or() para fornecer um valor padrão em caso de falha.

Experimente você mesmo

fn parse_to_integer(input: String) -> i32 {
    // Escreva o código aqui
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow