Size: a a a

Rust — русскоговорящее сообществo

2020 September 29

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Это итератор, который который применяет предикат к содержимому коллекции. И дальше либо оставляет очередной элемент, либо yield-ит и удаляет.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Мне кстати конкретно drain_filter не подходит, т.к. он удаляет элементы по фильтру в дропе :(
источник

Э

Эрик in Rust — русскоговорящее сообществo
вафель 🧇
Мне кстати конкретно drain_filter не подходит, т.к. он удаляет элементы по фильтру в дропе :(
Ну делаешь ManuallyDrop<T> и руками их ptr::read, чего уж там.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Vladimir
1. Ну скорее всего у тебя тут Х не тайп параметр, а ассоциативный тип должен быть.
2. trait A: B, боунд наверное тоже не обязателен, так как B у тебя просто "детали реализации".
3. Ну и вообще трейт B, имхо, это попытка натянуть ООП, на Раст, по хорошему Трейт должен описывать поведение, а не реализовывать доступ к полям.



Как это можно написать учитывая 1-2:

trait B {
type X;
fn inner(&mut self) -> &mut Self::A
}
impl B for S<T>{type X = T;...}
...
trait A{
fn reset(&mut self);
}

impl<X> A for X
where X: B,
<X as B>::X : Default,
{
fn reset(&mut self) ->{* self.inner = Default::default()}
}
@c_vld Как вы предложили, сделать к сожалению не получилось. Я сделал B как pub(crate)(в противном случае inner() был бы публично доступен, что противоречит самой цели), и он тогда ругается, что "crate-visible trait B in public interface" на impl<X> A for X where X: B, <X as B>::X : Default,
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
А чего не nvim-lsp?
Кстати, у тебя code action работает?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Ну делаешь ManuallyDrop<T> и руками их ptr::read, чего уж там.
forbid(unsafe_code) 😞
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ilya Lakhin
@c_vld Как вы предложили, сделать к сожалению не получилось. Я сделал B как pub(crate)(в противном случае inner() был бы публично доступен, что противоречит самой цели), и он тогда ругается, что "crate-visible trait B in public interface" на impl<X> A for X where X: B, <X as B>::X : Default,
Кто мешает засилить трейт, чтобы другие крейты не могли имплементить трейт?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Кстати, у тебя code action работает?
Это чего?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
Это чего?
:lua vim.lsp.buf.code_action()
источник

Э

Эрик in Rust — русскоговорящее сообществo
вафель 🧇
forbid(unsafe_code) 😞
В другом крейте пили, и импорти.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Позволяет делать всякие вещи типа «додерайвить трейт» или «заполнить ветки match»
источник

DP

Daniel Podolsky in Rust — русскоговорящее сообществo
Эрик
Кто мешает засилить трейт, чтобы другие крейты не могли имплементить трейт?
сленг растовый, конечно, стремный
источник

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
:lua vim.lsp.buf.code_action()
Не юзал, не знаю.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ilya Lakhin
@c_vld Как вы предложили, сделать к сожалению не получилось. Я сделал B как pub(crate)(в противном случае inner() был бы публично доступен, что противоречит самой цели), и он тогда ругается, что "crate-visible trait B in public interface" на impl<X> A for X where X: B, <X as B>::X : Default,
источник

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Позволяет делать всякие вещи типа «додерайвить трейт» или «заполнить ветки match»
Это ты какой-то CoC.vim + плагин RA на тайпскрипте хочешь.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
Это ты какой-то CoC.vim + плагин RA на тайпскрипте хочешь.
Зачем? Это встроенная функциональность LSP.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
И даже, в теории, поддержанная в nvim-lsp
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Только не работает.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Только не работает.
Я нажимаю цифру и ничего не происходит
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Так и что мне это даст? Если я impl в приватный модуль запихаю, у меня этого имлпа не будет в публичном интерфейса крейта
источник