Zpět na domů

Rust 1.94.0: Nové metody a konfigurace Cargo | IT-přehled

Vydání Rust 1.94.0 zahrnuje stabilizaci metody array_windows pro zpracování oken pevné délky, podporu klíče include v konfiguračních souborech Cargo a přechod na TOML 1.1. Tyto změny zjednodušují psaní bezpečného a čitelného kódu a také flexibilní nastavení projektů. Aktualizace je doporučena pro všechny vývojáře na Rust.

Rust 1.94.0: Jak nové funkce zlepší váš kód? Podrobnosti vydání
Advertisement 728x90

# Rust 1.94.0: Stabilizace array_windows, klíč include v konfiguracích a přechod na TOML 1.1

Vydána nová verze Rust 1.94.0, která přináší několik významných vylepšení pro vývojáře. Mezi klíčové novinky patří metoda array_windows pro iteraci přes pole fixní délky, podpora klíče include v konfiguračních souborech Cargo a přechod na TOML 1.1. Vysvětlíme, jak tyto změny usnadní vaši práci.

Metoda array_windows: práce s okny fixní délky

V nové verzi Rust byla stabilizována metoda array_windows pro slicy. Umožňuje iterovat přes slice s okny fixní délky, což eliminuje potřebu ruční indexace a kontrol hranic. Na rozdíl od metody windows, která vrací slicy dynamické délky (&[T]), array_windows vrací reference na pole fixní délky (&[T; N]).

To je obzvláště užitečné v úlohách, kde je potřeba zpracovávat po sobě jdoucí prvky s pevně danou velikostí okna. Například pro hledání vzorce ABBA (dvě různé písmena, za nimiž následuje obrácený pořadí této dvojice) v řetězci lze použít následující kód:

Google AdInline article slot
fn has_abba(s: &str) -> bool {
    s.as_bytes()
        .array_windows()
        .any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2))
}

Kompilátor automaticky odvodí délku okna (4) z vzorce destrukturyzace v uzávěru. Při použití windows(4) by bylo potřeba ručně kontrolovat indexy, což je méně bezpečné a čitelné.

Řízení konfigurace Cargo prostřednictvím klíče include

Cargo nyní podporuje klíč include v konfiguračních souborech (.cargo/config.toml). Tato funkce usnadňuje organizaci, sdílení a správu konfigurací mezi projekty a prostředími.

Klíč include může být polem cest nebo inline tabulkou s dodatečnými volbami. Například:

Google AdInline article slot
# Pole cest
include = [
    "frodo.toml",
    "samwise.toml",
]

# Inline tabulky pro jemné nastavení
include = [
    { path = "required.toml" },
    { path = "optional.toml", optional = true },
]

Volba optional = true umožňuje specifikovat, že soubor může v některých prostředích chybět (např. na lokálním stroji vývojáře). To zvyšuje flexibilitu konfigurace bez nutnosti udržovat samostatné větve.

Přechod na TOML 1.1: co se změnilo

Cargo nyní plně podporuje TOML verze 1.1 pro manifesty a konfigurační soubory. To zahrnuje několik pohodlných vylepšení:

  • Možnost umístit inline tabulky na více řádků s ukončovacími čárkami.
  • Nové únikové sekvence pro řetězce: \xHH a \e.
  • Volitelné sekundy v reprezentaci času (výchozí hodnota — 0).

Příklad použití vířeřádkové inline tabulky:

Google AdInline article slot
serde = {
    version = "1.0",
    features = ["derive"],
}

Poznámka: Použití nových možností TOML 1.1 v Cargo.toml zvyšuje minimální podporovanou verzi Rust (MSRV) na úroveň vyžadující nový parser Cargo. Při publikování krate však Cargo automaticky přepíše manifest do formátu kompatibilního se staršími parsery. To umožňuje zachovat podporu starších verzí Rust pro uživatele vašeho krate.

Stabilizované API: úplný seznam

V releasu 1.94.0 bylo stabilizováno mnoho API, která se dříve nacházela ve fázi vývoje. Zde jsou hlavní z nich:

  • Metody pro slicy: <[T]>::array_windows, <[T]>::element_offset
  • Metody pro LazyCell: get, get_mut, force_mut
  • Metody pro LazyLock: get, get_mut, force_mut
  • Konverze: impl TryFrom<char> for usize
  • Metody pro Peekable: next_if_map, next_if_map_mut
  • Intrinsic funkce pro x86 (AVX-512 FP16) a AArch64 (NEON FP16), kromě těch závislých na nestabilním typu f16
  • Matematické konstanty: f32::consts::EULER_GAMMA, f64::consts::EULER_GAMMA, f32::consts::GOLDEN_RATIO, f64::consts::GOLDEN_RATIO
  • Metody f32::mul_add a f64::mul_add jsou nyní stabilní v const kontextech

Tyto změny rozšiřují možnosti standardní knihovny a činí kód výraznějším.

Co je důležité: klíčové závěry pro vývojáře

  • Zjednodušení zpracování oken: Metoda array_windows snižuje šablonový kód při práci s fixními okny, zvyšuje bezpečnost a čitelnost.
  • Flexibilita konfigurace: Klíč include v Cargo umožňuje modulární sestavování konfigurací, což je obzvláště užitečné pro velké projekty a týmy.
  • Kompatibilita s TOML 1.1: Nové možnosti TOML činí konfigurační soubory pohodlnějšími, ale vyžadují zohlednění MSRV při použití v Cargo.toml.
  • Rozšíření standardní knihovny: Stabilizace nových API včetně matematických konstant a metod pro iterátory usnadňuje řešení běžných úkolů.

Aktualizace na Rust 1.94.0 je doporučena všem vývojářům, aby využili tato vylepšení. Pro instalaci použijte příkaz rustup update stable.

— Editorial Team

Advertisement 728x90

Číst dál