str
- это тип str примитива , который является нестандартным типом с некоторыми ограничениями - вы столкнулись с одним из них.
Чтобы решитьвместо того, чтобы возвращать простой str
, вам нужно вернуть &str
, зарезервированный фрагмент строки.В этом конкретном случае вы могли бы даже использовать &'static str
, потому что строковые литералы всегда имеют время жизни static
.
Кроме того, поскольку примитивный массив также является DST (тип с динамическим размером, другой способ измерения размера без размера)), вам нужно указать количество элементов (что вы сделали правильно).
Итак, полное объявление будет fn getValues()-> [&'static str; 100]
.
Если вы не знаете размер массиваво время компиляции вы можете использовать Vec
, если у вас есть несколько не-литеральных строк, которые вы, вероятно, захотите использовать String
.Это выглядело бы как
fn getValues() -> Vec<String> { vec!["shoten".into()] }
PS: не уклоняйтесь от этих выделенных кучей принадлежащих типов - они действительно облегчают программирование.Борьба со ссылками и временем жизни - это хороший стиль, но вам не нужно делать все это заранее, а вместо этого оптимизируйте и реорганизуйте позже.