Chamando Funções Inseguras
Uma função ou método pode ser marcado como unsafe
se houver pré-condições extras que você deve respeitar para evitar comportamento indefinido:
fn main() { let emojis = "🗻∈🌏"; // Seguro porque os índices estão na ordem correta, dentro dos limites da // slice da string, e contido dentro da sequência UTF-8. unsafe { println!("emoji: {}", emojis.get_unchecked(0..4)); println!("emoji: {}", emojis.get_unchecked(4..7)); println!("emoji: {}", emojis.get_unchecked(7..11)); } println!("contador de caracteres: {}", count_chars(unsafe { emojis.get_unchecked(0..7) })); // Não manter o requerimento de codificação UTF-8 viola segurança de memória! // println!("emoji: {}", unsafe { emojis.get_unchecked(0..3) }); // println!("contador caracter: {}", contador_caracteres(unsafe { emojis.get_unchecked(0..3) })); } fn count_chars(s: &str) -> usize { s.chars().map(|_| 1).sum() }