также, чтобы результат лежал не в heap
получить вектор символов из исходного байт-вектораа почему бы тогда
Vec<char>
не использовать? для понимания, - почему блок A работает, а B - нет:
c.to_string().as_str()
, а ссылка на него в рамках всего блока В. Ссылка не может жить дольше чем то, на что она ссылается.правильно ли я делаю, если важна скорость и нужно конвертировать из Vec_u8 в Vec_Stringважна скорость чего?
u03.push(c.to_string().as_str());
тут Вы сохраняете ссылку на временный объект строки. Строка дропнется прямо на этой же строке, а ссылка на нее останется, а следовательно будет не валидной. Rust запрещает творить такую дичь, и хорошо что запрещает, в плюсах такой код был бы UB. Box::new(value)
value сначала будет на стеке и потом переместится на кучу, так что тут опять упираемся в размер стека, хотя это обходится через unsafe и работу с аллокатором.