Это для текущего 0.6 ржавчины, кстати, не уверен в точном фиксации.
Скажем, я хочу, чтобы для каждого по некоторым строкам, и мое закрытие принимает аргумент заимствованного строкового указателя (& str). Я хочу, чтобы мое закрытие добавляло свой аргумент к собственному вектору принадлежащих ему строк ~ [~ str] для возврата. Мое понимание ржавчины слабое, но я думаю, что строки - это особый случай, когда вы не можете разыгрывать их с * правильно? Как получить строки из & str в векторный метод push, который принимает значение ~ str?
Вот код, который не компилирует
fn read_all_lines() -> ~[~str] {
let mut result = ~[];
let reader = io::stdin();
let util = @reader as @io::ReaderUtil;
for util.each_line |line| {
result.push(line);
}
result
}
Он не компилируется, потому что он выводит тип результата как [& str] с тех пор, как я нажимаю на него. Не говоря уже о том, что его жизнь будет неправильной, так как я добавляю в нее более короткую переменную.
Я понимаю, что могу использовать ReadUtil read_line() метод, который возвращает ~ str. Но это всего лишь пример.
Итак, как мне получить принадлежащую строку из заимствованной строки? Или я полностью недопонимаю.