Йосиф качи първо решение на 22.10.2025 01:38 (преди 9 дена)
Обясни защо в случая с i32 е възможно да използваме x след извикване, но не можем да използваме s след duplicate_string.
Защото при числови аргументи с константен размер компилаторът прави копие на стойността на променливата вместо да подава референция към нея. String се подава като референция и компилаторът маркира, че тези референция се 'държи' от аргумента във функцията и повече няма да е достъпна за оригиналната променлива.
Какво става, ако duplicate_string върне (s, s) — защо компилаторът го забранява?
Защото се опитваме да върнем две референтни променливи за една референция. Ръст го забранява за да е сигурен, че една стойност върху хийпа се 'държи' от точно една reference променлива. Не повече от една.
