Подтвердить что ты не робот

Как создать статический массив строк?

Примечание Этот вопрос содержит синтаксис, который предшествует Rust 1.0. Код недействителен, но концепции по-прежнему актуальны.

Как вы создаете глобальный статический массив строк в Rust?

Для целых чисел это компилируется:

static ONE:u8 = 1;
static TWO:u8 = 2;
static ONETWO:[&'static u8, ..2] = [&ONE, &TWO];

Но я не могу получить что-то подобное для компиляции строк:

static STRHELLO:&'static str = "Hello";
static STRWORLD:&'static str = "World";
static ARR:[&'static str, ..2] = [STRHELLO,STRWORLD]; // Error: Cannot refer to the interior of another static
4b9b3361

Ответ 1

Это стабильная альтернатива Rust 1.0 и каждой последующей версии:

const BROWSERS: &'static [&'static str] = &["firefox", "chrome"];

Ответ 2

В Rust есть два связанных понятия и ключевые слова: const и static:

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

Для большинства случаев использования, в том числе и для этого, константа более подходит, поскольку мутация недопустима, а компилятор может встраивать объекты const.

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

Обратите внимание, что есть некоторая устаревшая документация, в которой не упоминается более новая константа, включая Rust by Example.

Ответ 3

Другой способ сделать это сейчас:

const A: &'static str = "Apples";
const B: &'static str = "Oranges";
const AB: [&'static str; 2] = [A, B]; // or ["Apples", "Oranges"]