Soru Statik dizi dizisi nasıl oluşturulur?


Not Bu soru, Rust 1.0'ı önleyen sözdizimini içerir. Kod geçersizdir, ancak kavramlar hala geçerlidir.

Rust'ta global bir statik dizi dizisi nasıl oluşturulur?

Tamsayılar için, bu derler:

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

Ama derlemek için dizeler benzer bir şey elde edemiyorum:

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

18
2017-12-13 14:03


Menşei


Pas oyun parkında bu kod: is.gd/IPkdU4 - Andrew Wagner


Cevaplar:


Bu, Rust 1.0 ve sonraki her sürüm için kararlı bir alternatiftir:

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

21
2017-09-03 19:23



Bu konuda bir fikir birliği olduğu için test olmadan kabul etmek. (Şu an Rust kullanmıyorum) Teşekkürler! - Andrew Wagner
Sen bırakabilirsin 'static ömür boyu belirteçleri const BROWSERS: &[&str] = &["firefox", "chrome"]; - Felix D.


Rust'ta iki ilgili kavram ve anahtar kelime vardır: const ve static:

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

Mutasyona izin verilmediğinden ve derleyici const öğelerini inlinebileceğinden, bu kullanım dahil çoğu kullanım durumu için const daha uygundur.

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

Not, orada Rust tarafından örnek dahil olmak üzere yeni const, söz değil bazı güncel belgeler var.


2
2017-12-13 14:54



Belgelere taşındı yeni bir yer. - Mattias Bengtsson


Günümüzde bunu yapmanın başka bir yolu:

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

2
2018-01-30 02:28