Aprenda a formatar seus dados de string para uma apresentação perfeita.

A formatação de string é um aspecto crucial da programação, pois permite manipular e exibir dados de maneira legível e estruturada. Você pode controlar a apresentação de dados formatando strings para uma melhor experiência do usuário.

O Rust fornece um mecanismo poderoso e flexível para formatação de strings que permite criar uma saída clara e concisa, incluindo funcionalidade numérica, data, hora e tratamento de erros.

Formatação básica de strings em Rust

Rust fornece funcionalidade para formatar strings com outros Tipos embutidos de ferrugem.

Você pode usar o formatar! macro para formatação básica de string em Rust. O formatar! A macro fornece uma maneira concisa e poderosa de construir cadeias de caracteres formatadas com espaços reservados entre chaves.

fnprincipal() {
deixar nome = "Alice";
deixar idade = 25;
deixar mensagem = formatar!("Meu nome é {} e tenho {} anos.", nome idade);
println!("{}", mensagem);
}

O nome variável contém uma string, e o

instagram viewer
idade variável contém um número inteiro. O mensagem variável tem uma string formatada que utiliza formatar! para substituir os espaços reservados pelos valores correspondentes, resultando em uma string de formato contendo o nome e idade.

O formatar! macro oferece suporte a vários especificadores de formato que permitem controlar a saída.

Veja como especificar o número de casas decimais para números de ponto flutuante, definir a largura dos campos e alinhar a saída.

fnprincipal() {
deixar pi = 3.14159;
deixar formatado_pi = formatar!("O valor de pi é aproximadamente {:.2}", pi);
println!("{}", formatado_pi); // imprime 3.14
}

O pi a variável contém um valor de ponto flutuante; com o especificador de formato :.2, você pode instruir o formatar! macro para exibir pi com duas casas decimais.

O formatar! macro é um dos muitos métodos de formatação de string com Rust. Dependendo de seus requisitos, considere usar o println! ou escrever! macro para saída formatada para o console ou outros fluxos de saída.

Formatando Valores Numéricos

Rust também fornece funcionalidade para formatar vários valores numéricos, de inteiros a flutuantes e outros tipos numéricos.

Geralmente, os especificadores de formato são a base da formatação de strings no Rust, e você precisará do especificador correto, dependendo do valor numérico que deseja formatar.

Aqui estão alguns dos especificadores de formato que o Rust fornece para valores numéricos:

Tipo Numérico

Formatador

Funcionalidade

inteiros

%d ou %i

Formata números inteiros, incluindo valores positivos e negativos.

Números de ponto flutuante

%f

Adequado para formatar números de ponto flutuante, incluindo as partes inteiras e fracionárias.

Notação exponêncial

%e ou %E

Formata números em notação científica (forma exponencial).

representação octal

%o

Formata números inteiros em representação octal (base 8).

representação hexadecimal

%x ou %X

Formata números inteiros em representação hexadecimal (base 16).

Além disso, você pode especificar preenchimento e alinhamento para valores numéricos. O preenchimento adiciona espaços ou zeros a um valor numérico formatado para atingir a largura desejada. O preenchimento ajuda a alinhar valores para apresentação em formato tabular ou outros layouts organizados visualmente. Antes do valor da largura, você pode especificar o caractere de preenchimento, um espaço ou zero.

Para alinhar um valor à esquerda, use o - bandeira. Para alinhar um valor à direita, omita o sinalizador ou use o sinalizador '0' para preenchimento com zeros.

fnprincipal() {
número = 42
número_formatado = "%10d" % número
imprimir (número_formatado)
}

O valor é alinhado à direita em uma largura de 10 caracteres, resultando em oito espaços à esquerda antes do número.

Formatação de string personalizada em Rust

A formatação de string personalizada é importante para operações mais exigentes. Você pode criar implementações de formatação personalizadas para seus tipos com o Rust integrado padrão:: fmt módulo.

O padrão:: fmt O módulo fornece recursos para formatar a saída com uma ampla variedade de opções para personalizar a aparência dos dados durante o processo de conversão de string. O padrão:: fmt módulo fornece um Mostrar e Depurar trait que é útil para operações de formatação de string.

A característica de exibição

O Mostrar trait ajuda a produzir uma saída legível por humanos, definindo como um objeto deve ser formatado com o {} espaço reservado em uma string. Você pode implementar o Mostrar traço para o seu tipos personalizados definindo um método chamado fmt que usa um formatador como argumento.

O formatador fornece vários métodos para controlar a saída do formato, como o write_str e write_fmt métodos.

usar padrão:: fmt;

// Define uma struct chamada `Point`
estruturaApontar {
x: i32,
você: i32,
}

// Implemente o trait `Display` para `Point`
implicar fmt:: Exibição para Apontar {
fnfmt(&auto, f: &mudo fmt:: Formatador<'_>) -> fmt::Resultado {
// Formata a estrutura `Point` como "(x, y)"
escrever!(f, "({}, {})", auto.x, auto.y)
}
}

fnprincipal() {
// Cria uma nova instância `Point`
deixar ponto = Ponto { x: 5, você: 10 };

// Imprime a estrutura `Point` usando a formatação `Display`
println!("A questão é: {}", apontar);
}

O Apontar struct implementa o Mostrar característica. Dentro de fmt método, o escrever! formatos de macro e grave a saída desejada no formatador com o {} espaço reservado.

A característica de depuração

O Depurar característica é semelhante ao Mostrar característica, exceto que se concentra na produção de saída adequada para depuração e Manipulação de erros propósitos. O Depurar característica é usada principalmente com o {:?} espaço reservado.

Implementando o Depurar característica em seus tipos personalizados é simples. O Depurar trait fornece uma implementação padrão com base no Mostrar característica. No entanto, você pode substituir o comportamento padrão para fornecer uma representação de depuração especializada.

usar padrão:: fmt;

// Define uma estrutura chamada `Pessoa`
#[derivar (depurar)]
estruturaPessoa {
nome: Corda,
idade: u32,
}

// Implemente o trait `Display` para `Person`
implicar fmt:: Exibição para Pessoa {
fnfmt(&auto, f: &mudo fmt:: Formatador) -> fmt::Resultado {
// Formata a estrutura `Person` como uma string legível por humanos
escrever!(f, "Nome idade: {}", auto.nome, auto.idade)
}
}

fnprincipal() {
// Cria uma nova instância `Person`
deixar pessoa = Pessoa {
nome: Corda::de("Alice"),
idade: 30,
};

// Imprime a estrutura `Person` usando a formatação `Display`
println!("Mostrar: {}", pessoa);

// Imprime a estrutura `Person` usando a formatação `Debug`
println!("Depurar: {:?}", pessoa);
}

O programa deriva o Depurar característica para o Pessoa estrutura com #[derivar (depurar)]. Isso gera automaticamente a implementação com base nos campos struct.

A macro println imprime a representação de depuração com o Depurar espaço reservado de formatação para formatar a saída usando o Depurar implementação.

Rust tem um sistema de tipo rico em recursos

O sistema de tipo rico do Rust desempenha um papel crucial na formatação de strings. Aproveitando a digitação estática e as poderosas bibliotecas de formatação do Rust, você pode escrever um código seguro e eficiente enquanto lida com tarefas de manipulação e formatação de strings.

O sistema de tipo garante segurança em tempo de compilação e evita erros comuns, desde incompatibilidades de tipo até problemas de especificador de formato. Com a combinação do sistema de tipos do Rust e seus amplos recursos de formatação, você pode enfrente com confiança os desafios de formatação de strings e beneficie-se do desempenho e da segurança da linguagem garantias.