Время жизни в Русте

Изредка яЯ обнаружил, что хочу написать функции, которые можно вызывать двумя способами:

// With a string literal:
let lines = read_file_lines("data.txt");

// With a string pointer:
let file_name = ~"data.txt";
let lines = read_file_lines(file_name);

Моим первым предположением было использование заимствованного указателя (&str) для типа параметра, но когда это неработать (это позволило мне использовать только@str а также~str), Я попробовал следующее (скопировав библиотеки Rust), которое сработало.

fn read_file_lines ~[~str] {
    let read_result = file_reader(~Path(path));
    match read_result {
        Ok(file) => file.read_lines(),
        Err(e) => fail!(fmt!("Error reading file: %?", e))
    }
}

Проблема в том, что я нене понимаю, что яя делаю. Из того, что я могу собрать (в основном из ошибок компилятора), я 'm объявляет время жизни, на которое нет ограничений, и использует его для описания параметра пути (что означает, что любое время жизни может быть передано в качестве параметра).

Так:

Является ли мое понимание неопределенно точным?Что такое жизнь? Где я могу узнать о них больше?В чем разница между параметром типа&str и параметр типа&'a str в приведенном выше примере?И пока ям, что это?'self

(Я'м с использованием Rust 0.7, если это имеет значение для ответа)

Ответы на вопрос(1)

Ваш ответ на вопрос