How to create a static array of strings?

前端 未结 4 1248
情书的邮戳
情书的邮戳 2021-02-03 18:45

Note This question contains syntax that predates Rust 1.0. The code is invalid, but the concepts are still relevant.

How do

相关标签:
4条回答
  • 2021-02-03 19:36

    Just used this to allocate a small POC level for a game in Rust

    const LEVEL_0: &'static [&'static [i32]] = &[
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 9, 0, 0, 0, 2, 0, 0, 3, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        &[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    ];
    

    And loaded using the following function

    pub fn load_stage(&mut self, ctx: &mut Context, level: usize) {
        let levels = vec![LEVEL_0];
    
        for (i, row) in levels[level].iter().enumerate() {
            for (j, col) in row.iter().enumerate() {
                if *col == 1 {
                    self.board.add_block(
                        ctx,
                        Vector2::<f32>::new(j as f32, i as f32),
                        self.cell_size,
                    );
                }
    
    0 讨论(0)
  • 2021-02-03 19:41

    There are two related concepts and keywords in Rust: const and static:

    https://doc.rust-lang.org/reference/items/constant-items.html

    For most use cases, including this one, const is more appropriate, since mutation is not allowed, and the compiler may inline const items.

    const STRHELLO:&'static str = "Hello";
    const STRWORLD:&'static str = "World";
    const ARR:[&'static str, ..2] = [STRHELLO,STRWORLD];
    

    Note, there is some out-of-date documentation out there that doesn't mention the newer const, including Rust by Example.

    0 讨论(0)
  • 2021-02-03 19:49

    This is a stable alternative for Rust 1.0 and every subsequent version:

    const BROWSERS: &'static [&'static str] = &["firefox", "chrome"];
    
    0 讨论(0)
  • 2021-02-03 19:50

    Another way to do it nowadays is:

    const A: &'static str = "Apples";
    const B: &'static str = "Oranges";
    const AB: [&'static str; 2] = [A, B]; // or ["Apples", "Oranges"]
    
    0 讨论(0)
提交回复
热议问题