Вопрос:

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

arrays string static rust

7614 просмотра

3 ответа

7889 Репутация автора

Примечание. Этот вопрос содержит синтаксис, предшествующий 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
Автор: Andrew Wagner Источник Размещён: 13.12.2014 02:03

Ответы (3)


4 плюса

7889 Репутация автора

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

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

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

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

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

Автор: Andrew Wagner Размещён: 13.12.2014 02:54

29 плюса

768 Репутация автора

Решение

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

const BROWSERS: &'static [&'static str] = &["firefox", "chrome"];
Автор: Quartz Размещён: 03.09.2015 07:23

3 плюса

779 Репутация автора

Еще один способ сделать это в настоящее время:

const A: &'static str = "Apples";
const B: &'static str = "Oranges";
const AB: [&'static str; 2] = [A, B]; // or ["Apples", "Oranges"]
Автор: Adrian Размещён: 30.01.2017 02:28
Вопросы из категории :
32x32