Можно ли поместить stati c в объявление структуры? - PullRequest
0 голосов
/ 16 января 2020

На языке программирования Rust может быть случай, когда 'static находится здесь:

struct Abc <'static> {
  ...

Ответы [ 2 ]

4 голосов
/ 16 января 2020

Это немного похоже на вопрос, можете ли вы указать i32 в качестве параметра типа в объявлении структуры:

struct Abc<i32> {}

Это не имеет смысла [1] .

Параметр типа позволяет полям структуры быть обобщенными c:

struct Abc<T> {
    foo: T, // a user of this struct can choose the type of T
}

Аналогично, параметр времени жизни позволяет генерировать время жизни ссылки c:

struct Abc<'a> {
    foo: &'a str, // a user of this struct can choose the lifetime bound
}

Если вы хотите, чтобы время жизни всегда было стабильным c, просто укажите это, а не делайте его обобщенным c:

struct Abc {
    foo: &'static str, // this must always be static
}

[1] На самом деле он объявляет параметр типа, который, как оказалось, имеет то же имя, что и тип i32, но вряд ли это было бы то, что человек, который пытался написать что-то подобное, намеревался.

2 голосов
/ 16 января 2020

Нет.

Каждый тип имеет неявное время жизни 'static, если не указано общее время жизни c. Время жизни в объявлении структуры, как в

struct Abc<'here, 'and, 'there>;

, предназначено для указания того, что структура содержит более короткие времена жизни, и присвоения им имени. 'static для особого времени жизни здесь не нужно указывать или иметь локальное имя.

Однако это не означает, что эти времена жизни не могут быть 'static для конкретного экземпляра структура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...