Size: a a a

2021 January 25

D

Dima in rust_offtopic
Class contains pointer to self - Pin и указатели?
источник

CD

Constantine Drozdov in rust_offtopic
Constantine Drozdov
ты про 3?
struct node {
  node * next; //not null
  node * prev; //not null
};
пустой список содержит один node
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
ты про 3?
struct node {
  node * next; //not null
  node * prev; //not null
};
struct Node {
  Option<NotNull<Node>> next;
  Option<NotNull<Node>> prev;
}
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
struct Node {
  Option<NotNull<Node>> next;
  Option<NotNull<Node>> prev;
}
тогда нет смысла в not null
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
тогда нет смысла в not null
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
иначе у тебя структуру нельзя инициализировать, ты же понимаешь
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
то что "мамай клянус я туда один раз пишу" - ну пусть будет у тебя опшн явный лол
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
иначе у тебя структуру нельзя инициализировать, ты же понимаешь
можно
struct list {
  node head;
  list() : head{ &head, &head } ()
};
источник

CD

Constantine Drozdov in rust_offtopic
я не самый большой специалист в реализации двусвязных списков, но вроде бы зациклить убирает кучу проверок в операциях
источник

D

Dima in rust_offtopic
хз, я знаю 3 реализации двухсвязных списков на расте, 2 intrusive и одну owned, нигде зацикливания не видел
источник

CD

Constantine Drozdov in rust_offtopic
Dima
хз, я знаю 3 реализации двухсвязных списков на расте, 2 intrusive и одну owned, нигде зацикливания не видел
зато везде видел ифы при вставке элемента?
источник

D

Dima in rust_offtopic
fn attach(&mut self, node: *mut Node<K, V>) {
       unsafe {
           (*node).next = (*self.head).next;
           (*node).prev = self.head;
           (*self.head).next = node;
           (*(*node).next).prev = node;
       }
   }

?
источник

CD

Constantine Drozdov in rust_offtopic
Dima
fn attach(&mut self, node: *mut Node<K, V>) {
       unsafe {
           (*node).next = (*self.head).next;
           (*node).prev = self.head;
           (*self.head).next = node;
           (*(*node).next).prev = node;
       }
   }

?
а если последний
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
я не самый большой специалист в реализации двусвязных списков, но вроде бы зациклить убирает кучу проверок в операциях
не уверен что оно всегда правильно будет работать. Например наивный форыч пока не встретим null.
источник

CD

Constantine Drozdov in rust_offtopic
какой next.prev
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
какой next.prev
я выше кидал линк на реализацию листа. Посмотри сам
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
зачем этот сломанный телефон
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
не уверен что оно всегда правильно будет работать. Например наивный форыч пока не встретим null.
так тебе эти указатели не дадут, дадут итераторы
источник

CD

Constantine Drozdov in rust_offtopic
источник

CD

Constantine Drozdov in rust_offtopic
понятно же что match
источник