Ein Blog

Die Leute bei Rust wollen das Coloring-Problem lösen. Den Artikel dazu hatte ich hier auch schon.

Der Versuch: Sagen, dass eine Funktion agnostisch bzw. “generisch bezüglich ihrer Asynchronizität” ist. Da hört es aber nicht auf, sie wollen das auch über const generisch machen. Der Plan ist sogar, das in Zukunft auch für andere Keywords zu machen.

Das hier ist der erste Vorschlag: Keyword Generics Progress Report: February 2023

Money quote:

trait ?const ?async Read {
    ?const ?async fn read(&mut self, buf: &mut [u8]) -> Result<usize>;
    ?const ?async fn read_to_string(&mut self, buf: &mut String) -> Result<usize> { .. }
}

/// Read from a reader into a string.
?const ?async fn read_to_string(reader: &mut impl ?const ?async Read) -> io::Result<String> {
    let mut string = String::new();
    reader.read_to_string(&mut string).await?;
    Ok(string)
}

Das ist ein Read-Trait, bei dem die read-Funktion sowohl async als auch const sein kann. Primeagen (ein Rust-Enthusiast) ist nicht so begeistert. Wirt auf mich jetzt auch erstmal ziemlich verbose und bei einer Sprache, die bewusst keine Keywords mit mehr als 5 Buchstaben nimmt, fehl am Platz. Das haben sie aber offenbar auch selbst erkannt.

Zig möchte Funktionen auf diese Art farbenblind (manchmal auch farblos genannt) machen: What is Zig’s “Colorblind” Async/Await?

Hoffen wir mal, dass Rust nicht den Haskell-Tod der 1000 Abstraktionen stirbt.