2014-11-27 4 views
3

Я пытаюсь инициализировать-структуру со следующей планировкой:Rust anonyomous статический массив

struct BytePattern { 
    pattern: &'static [u8], 
    mask: &'static [u8] 
}; 

Могу ли я инициализировать этот встроенный, что-то вроде:

return BytePattern { 
    pattern: &'static [0x00u8, 0x00u8, 0x01u8, 0x00u8], 
    mask: &'static [0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8] 
} 

Edit: Вышеприведенные возвращает синтаксис ` error: expected:, found '['

Редактировать: Reddit предоставил следующий взломать его (да, я рывком и попрошу в нескольких местах для этого языка)

return BytePattern { 
    pattern: { static P: &'static [u8] = &[0x00u8, 0x00u8, 0x01u8, 0x00u8]; P }, 
    mask: { static M: &'static [u8] = &[0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8]; M }, 
} 

Который ... ужасный, но работает. Я буду использовать его, если я не могу найти что-то другое

+0

Вы пробовали? –

+0

@ MatthieuM. Я сделал, я обновил вопрос – IdeaHat

+0

(Если вы собираетесь пересылать вопросы на несколько сайтов, это, по крайней мере, вежливо, чтобы обеспечить связь между ними.) – huon

ответ

1

Вы можете использовать байт строковые литералы, чтобы произвести &'static [u8]:

BytePattern { 
    pattern: b"\x00\x00\x01\x00", 
    mask: b"\xff\xff\xff\xff", 
} 

Это, конечно, не является общим решением для любых статических срезов, но принимает уход за корпусом u8.