publicado liberação da linguagem de programação do sistema Ferrugem 1.42, fundado pelo projeto Mozilla. A linguagem se concentra na segurança da memória, fornece gerenciamento automático de memória e fornece ferramentas para alcançar alto paralelismo de tarefas sem usar um coletor de lixo e tempo de execução.
O gerenciamento automático de memória do Rust libera o desenvolvedor da manipulação de ponteiros e protege contra problemas decorrentes da manipulação de memória de baixo nível, como acessos de memória pós-liberação, desreferências de ponteiro nulo, saturação de buffer e assim por diante. Está sendo desenvolvido um gerenciador de pacotes para distribuir bibliotecas, garantir a montagem e gerenciar dependências pelo projeto. Carga, permitindo que você obtenha as bibliotecas necessárias para o programa com um clique. Um repositório é suportado para hospedar bibliotecas caixas.io.
Adicionado por suporte para modelos para correspondência de partes de fatias (matrizes dinâmicas, fatia). Anteriormente, as correspondências exatas eram permitidas, mas agora é possível usar construções marcadas com ".." para cobrir os elementos restantes do array. Por exemplo:
fn foo(palavras: &[&str]) {
combinar palavras {
// verifica os elementos iniciais do array e ignora
elementos que os seguem
["Olá", "Mundo", "!", ..] => println!("Olá Mundo!"),
// verifica os dois primeiros elementos "Foo" e "Bar", e o resto não é importante
["Foo", "Bar", ..] => println!("Baz"),
// ignora tudo, mas o último elemento deve ser "!".
[.., “!”] => println!(“!!!”),
// na fatia inicial incluímos tudo exceto o último elemento, que deve ser “z”
[iniciar @ .., "z"] => println!("começa com: {:?}", iniciar),
// no slice final colocamos tudo menos o primeiro elemento, que deveria ser “a”.
["a", end @ ..] => println!("termina com: {:?}", end),
resto => println!("{:?}", resto),
}
}
Adicionada uma nova macro “corresponde!”, que recebe uma expressão e um padrão como entrada e retorna “verdadeiro” se o padrão corresponder à expressão. O modelo pode usar operações “|” e se".
corresponder a self.partial_cmp(outro) {
Alguns (menos) => verdadeiro,
_ => falso,
}
deixe barra = Alguns(4);
afirmar!(corresponde!(bar, Some(x) se x > 2));
Em mensagens de pânico exibidas quando usadas incorretamente
tipos Opção e Resultado agora exibem números de linha com um link para o código que fez a chamada problemática, em vez de links para o código que implementa a chamada na libcore. Por exemplo, a mudança afeta chamadas para unwrap e expect sobre Option::None, ou trava ao usar unwrap_err, expect, expect_err e métodos semelhantes no tipo Result.
O gerenciador de pacotes Cargo fornece substituição automática de “proc_macro crate” no bloco “extern” para pacotes com macros procedurais. Esta mudança permite que a diretiva "use" seja aplicada a macros procedurais sem a necessidade de especificar "extern crate proc_macro;" no código. Por exemplo, se o programa usar a linha “use proc_macro::TokenStream;”, então o código continuará funcionando se “extern crate proc_macro;” for removido dele.
Os recursos da biblioteca padrão foram expandidos. Em iter::Vazio adicionado Suporte para envio e sincronização para quaisquer valores T.
Pin de chamadas::{map_unchecked, map_unchecked_mut} entregue de ter que retornar um valor de tipo para a implementação "Sized".
Em io::Cursor implementado ParcialEq e Eq. O atributo “const” determina a possibilidade de uso em qualquer contexto ao invés de constantes, aplicado para o método Layout::new.
Uma nova parte da API foi transferida para a categoria estável incluindo CondVar::wait_while estabilizado CondVar::wait_timeout_while
DebugMap::chave, DebugMap::valor,
ManualmenteDrop::take,
ptr::slice_from_raw_parts_mut e ptr::slice_from_raw_parts.
O método Error::description foi descontinuado.
Forneceu suporte de segundo nível para plataformas armv7a-none-eabi e riscv64gc-unknown-linux-gnu. Foi fornecido suporte para a biblioteca padrão da plataforma riscv64gc-unknown-linux-gnu.
Plataformas Apple de 32 bits rebaixado até o terceiro nível de suporte, que implica suporte básico, mas sem testes automatizados e publicação de builds oficiais. O downgrade no suporte se deve ao fato de a Apple não oferecer mais suporte a plataformas de 32 bits.