Автор Тема: Подсчет ссылок и принцип достижимости  (Прочитано 8662 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Подсчет ссылок и принцип достижимости
« Ответ #15 : Январь 24, 2013, 10:40:22 pm »
Вот так меня компилятор обругал:

Ну хорошо. А чего делать-то? Как проверить, что она не была мувнута и мувнуть?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Подсчет ссылок и принцип достижимости
« Ответ #16 : Январь 25, 2013, 07:07:52 am »
Вот так меня компилятор обругал:

Ну хорошо. А чего делать-то? Как проверить, что она не была мувнута и мувнуть?

Ты учти пожалуйста, что это не единственный тип указателей в Rust'e.

Ну и придумай какой-нибудь юзкейс более-менее реалистичный, чтобы на примере можно было поиграться с этими указателями.
Y = λf.(λx.f (x x)) (λx.f (x x))

Freeman

  • Newbie
  • *
  • Сообщений: 15
  • Завлаб
    • Просмотр профиля
    • Лаборатория Единой среды
Re: Подсчет ссылок и принцип достижимости
« Ответ #17 : Январь 25, 2013, 08:19:51 am »
Критика в том, что двусвязный список создает циклические ссылки, а язык без возможности создания двусвязного списка, не нужен.
Да, хорошая задача. Подумаю. Вызов принят, как говорится. :)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Подсчет ссылок и принцип достижимости
« Ответ #18 : Январь 25, 2013, 10:31:17 pm »
Ну и придумай какой-нибудь юзкейс более-менее реалистичный, чтобы на примере можно было поиграться с этими указателями.

Просто должен быть механизм "восстановления" типа до "немувнутого". Типа:
if (movable)
// здесь movable опять можно использовать
else
// а здесь нельзя - ошибка компиляции

Что-то другое трудно придумать.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Подсчет ссылок и принцип достижимости
« Ответ #19 : Январь 25, 2013, 11:01:37 pm »
Ну и придумай какой-нибудь юзкейс более-менее реалистичный, чтобы на примере можно было поиграться с этими указателями.

Просто должен быть механизм "восстановления" типа до "немувнутого". Типа:
if (movable)
// здесь movable опять можно использовать
else
// а здесь нельзя - ошибка компиляции

Что-то другое трудно придумать.

Все оказалось проще. Вот такая модификация того моего кода отлично работает:
fn main() {
    let x = ~10;
    if (rand::random()>0) {
        let y = x;
        io::println(y.to_str());
    } else {
        let z = x;
        io::println(z.to_str());
    }
}
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Подсчет ссылок и принцип достижимости
« Ответ #20 : Январь 25, 2013, 11:46:18 pm »
Да, а еще в Rust'e принципиально нет null'я или там nil'а какого, ни их аналогов :-)
Y = λf.(λx.f (x x)) (λx.f (x x))