this post was submitted on 25 Apr 2024
42 points (100.0% liked)

Rust

5960 readers
2 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 5 points 6 months ago (3 children)

Huh, this is awesome! From the link, this now works:

let v: Vec<i32> = const { Vec::new() };

I'm going to have to play with this to see how far it goes.

[–] [email protected] 2 points 6 months ago (1 children)

Wouldn't this just prevent you from allocating more memory (than zero)?

[–] [email protected] 2 points 6 months ago* (last edited 6 months ago)

Ah, apparently for now you're not allowed to allocate. But vec::new_in(allocator) looks interesting. This works in nightly today:

#![feature(allocator_api)]

use std::alloc::Global;

fn main() {
    const MY_VEC: Vec<i32> = const {
        Vec::new_in(Global)
    };
    println!("{:?}", MY_VEC);
}

Maybe at some point I can append to it at compile time too. I'd love to be able to put a const {} and have allocations that resolve down to a 'static, and this seems to be a step toward that.

I guess I'm just excited that Vec::new() is the example they picked, since the next obvious question is, "can I push?"

load more comments (1 replies)