Em Rust existem duas categorias diferentes de números: os inteiros (que podem ter sinal ou não ter sinal) e os números de vírgula flutuante.
O nome de um tipo numérico é composto por duas partes:
São possíveis as seguintes combinações:
u8, i8
u16, i16
u32, i32, f32
u64, i64, f64
u128, i128
Repara que só existem as variantes de 32 e 64 bits para os números de vírgula flutuante.
O Rust não faz nenhuma conversão de tipo implícita.
Isto significa que, se precisares de transformar um tipo numérico noutro, tens de o fazer explicitamente.
Ao converteres de um tipo maior para um menor (por exemplo, de u64 para u32), podes perder dados.
Ao converteres de um número de vírgula flutuante para um inteiro, vais perder tudo o que fica depois do separador decimal, o que arredonda, na prática, por defeito.
Neste exercício vais escrever código para analisar a produção de uma linha de montagem numa fábrica de automóveis. A velocidade da linha de montagem pode variar entre 0 (desligada) e 10 (máxima).
À velocidade mais baixa (1), são produzidos 221 automóveis por hora. A produção aumenta linearmente com a velocidade. Assim, com a velocidade definida para 4, devem ser produzidos 4 * 221 = 884 automóveis por hora. No entanto, velocidades mais altas aumentam a probabilidade de se produzirem automóveis com defeito, que depois têm de ser descartados. A lista seguinte mostra como a velocidade influencia a taxa de sucesso:
1 a 4: 100% de taxa de sucesso.5 a 8: 90% de taxa de sucesso.9 e 10: 77% de taxa de sucesso.Tens duas tarefas.
Implementa um método para calcular a taxa de produção por hora da linha de montagem, tendo em conta a taxa de sucesso:
assembly_line::production_rate_per_hour(6)
// Returns: 1193.4
Repara que o valor devolvido é um f64.
Implementa um método para calcular quantos automóveis funcionais são produzidos por minuto:
assembly_line::working_items_per_minute(6)
// Returns: 19
Repara que o valor devolvido é um u32.
Inscreve-te no Exercism para aprenderes e dominares Rust com 99 exercícios, e mentoria humana real, tudo grátis.