У меня есть два статических массива u8
, и я бы реализовал функцию для их объединения. Нечто подобное
fn concat_u8(first: &'static [u8], second: &'static [u8]) -> &'static [u8] {
&[&first[..], &second[..]].concat()
}
Компилятор показывает мне ошибку returns a reference to data owned by the current function
. Это потому, что выделенная память будет свободна в конце функции.
Как я могу "заставить" время жизни быть статичным?
Редактировать
У меня длительный процесс.
Во время запуска процесс обрабатывает некоторый ввод для вычисления результата (то есть функция concat_u8
). В результате получается массив u8
, который будет использоваться в остальной части жизненного цикла процесса только для чтения.
Функция concat_u8
не может быть вызвана после «внутреннего события start
».
Я бы не хотел использовать Box
, потому что динамическое распределение подразумевает небольшие накладные расходы (может быть, не поддается измерению?) И сохраняет результат как &[u8]
.
Есть ли у меня шанс сделать это?
Могу ли я сделать это без использования блока unsafe
?