172 похожих чатов

У меня есть Vec<u8> в одной структуре, мне надо это

скопировать и положить &[u8] в другую структуру. Пытаюсь склонировать вектор, превратить в слайс и забоксить. Но бокс требует сайзед. Есть какая-то ссылка, которая не требует сайзед или вобоще иначе надо проблему решать?

19 ответов

12 просмотров

Так вектор, это и так почти box, зачем его ещё раз боксить через салайс?

Danil Berestov
Ну а че предлагаешь?

Не боксить. Куда ты собрался этот бокс запихнуть, если у тебя во второй структуре требуется слайс?

если ты хочешь забоксить данные в векторе, чтобы например не менять размер, то можешь сделать Box<[u8]> через https://doc.rust-lang.org/std/vec/struct.Vec.html#method.into_boxed_slice

Danil-Berestov Автор вопроса
Сергей
если ты хочешь забоксить данные в векторе, чтобы н...

А как мне из Box<[u8]> сделать &[u8]? Я совсем маладой

Danil Berestov
Ну а че предлагаешь?

let vec2 = struct1.vec1.clone(); let struct2 = Struct2 {slice: &vec2};

Danil Berestov
А как мне из Box<[u8]> сделать &[u8]? Я совсем мал...

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

Danil Berestov
А как мне из Box<[u8]> сделать &[u8]? Я совсем мал...

Чтобы бокса не осталось, а слайс был? Никак. Слайс указывает на память аллоцированную каким-то объектом, сам по себе он существовать не может.

.clone().into_boxed_slice().leak()

Danil-Berestov Автор вопроса
red75prime
Чтобы бокса не осталось, а слайс был? Никак. Слайс...

то есть мне никак не решить изначальную задачу в том виде, кк она есть? "У меня есть Vec<u8> в одной структуре, мне надо это скопировать и положить &[u8] в другую структуру"

Danil Berestov
то есть мне никак не решить изначальную задачу в т...

Для начала придумай где ты будешь хранить копию вектора всё то время на которое тебе нужен слайс. Что бы не было так, что слайс живёт дольше вектора.

Danil-Berestov Автор вопроса
Kirill Kuzminykh
Для начала придумай где ты будешь хранить копию ве...

На кучу хотел кинуть и всё( От неё взять ссылку

Danil Berestov
На кучу хотел кинуть и всё( От неё взять ссылку

Куча - это тебе не мусорка, а камера хранения. Ты должен всё равно хранить "ключ" для ячейки в этой камере дольше чем её содержимое.

Danil Berestov
На кучу хотел кинуть и всё( От неё взять ссылку

Ссылки - это статический механизм обеспечения нужного время жизни контейнера, на который указывает ссылка. Если библиотека требует ссылку, то Rc не поможет. В общем, нужен код, который не работает.

Danil Berestov
На кучу хотел кинуть и всё( От неё взять ссылку

Может тебе лучше показать код, а то может оказаться что у тебя вот такая фигня: { let vec2 = struct1.vec1.clone(); let struct2 = Struct2 {slice: &vec2}; struct2.some_method(); // drop struct2 } И не понятно зачем в этом случае вообще заморачиваться боксами, мемори-ликами и прочим.

Похожие вопросы

Обсуждают сегодня

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
14
Дык какой описанный сценарий то? Единственное, что вижу я - это то что есть какой то интерфейс1 , про который известно, что у него есть метод, который возвращает другой интерф...
Jack128
7
А если без шуток, на чем десктоп сейчас пишут кроссплатформенный (ну чтобы с минимальным допиливанием под каждую платформу) и чтобы хорошая производительность софта была. Толь...
🐈
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Карта сайта