Rust får unions og break med værdier

Det ombejlede sprog får nye funktioner i version 1.19 med bedre C-integration til følge.

Sproget Rust får meget opmærksomhed for tiden. Det lover at komme tæt på metallet, ligesom C, med de fordele det giver, med hensyn til ydelse og hardware-integration. Samtidig skal koden være "sikker" ligesom i for eksempel Java og C#, ved blandt andet at holde styr på pointere og indeks i arrays.

Version 1.19 er landet, og her får det unge sprog unions, som kendes fra C. Det er en posttype med et felt af varierende type. Rusts nye unions er "untagged", hvilket vil sige at typen på feltet ikke er angivet i et andet felt. Det skriver Infoq.

Det betyder at de nye unions er usikre, da typen ikke fremgår af elementet. Derfor skal unions indkapsles i "Unsafe"-nøgleordet, som angiver en usikker kodestump, som i eksemplet fra Infoq herunder:

union MyUnion {
    f1: u32,
    f2: f32,
}
 
let u = MyUnion { f1: 1 };
unsafe { u.f1 = 5 };
let value = unsafe { u.f1 };
 
fn f(u: MyUnion) {
    unsafe {
        match u {
            MyUnion { f1: 10 } => { println!("ten"); }
            MyUnion { f2 } => { println!("{}", f2); }
        }
    }
}

Den nye funktionalitet er indført for at skabe nemmere interoperabilitet med C.

En anden ny funktion er break i løkker, som kan være et udtryk, der afleverer en værdi. Det kan se sådan ud:

let x = loop { break 7; };

Her bliver variablen x sat til 7, når break-sætningen kaldes i løkken.

Der er mere information om den nye version på Rusts hjemmeside.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (0)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize