Маjко
Хотя с другой стороны с ним сразу понятно, что принимается трейт (но надо ли это — не уверен)
Anton
fn filter<P😠self, predicate: P) -> Filter<Self, P> where P: FnMut(&Self::Item) -> bool,
Anton
Для единообразия — это как раз без impl, не?
нет, просто трейт это описание с impl указание на имплиментацию
Anton
может в будущем будут trait из функций генерить =)
Anton
Да и парсер чтобы сильно не переделывать
Маjко
Окей, смысл есть, но все равно по эргономике это как-то так себе, учитывая что фича часто используемая
Маjко
Тут был товарищ, пишущий плагин для идеи, можете кинуть контакт?
Маjко
Пасиб
Маjко
Я все таки на нее перешел, задолбали глюки вскодного плагина с воркспейсами
Маjко
@vlad20012 можешь подсказать по настройкам плагина? 1) можно где-то уменьшить задержку запуска анализа типов плагином? 2) аналогично про задержку запуска cargo check 3) где можно включить просмотр варнингов на манер vscode, списком с переходом на строку по клику? Сорри, если вопросы относятся больше к идее, чем к плагину)
Денис
Нашел ответ
у меня как-то так получилось: https://play.rust-lang.org/?gist=b69eaf3ecd2c4333b69fe794226f50a9&version=nightly
Маjко
Ага, спасибо, я уже осилил)
Маjко
Получилось где-то так же
Денис
интерфейс там конечно уёбищный
Денис
плюсовый bool operator()(args...) уже не кажется таким плохим
Маjко
x) Да уж, надеюсь, упростят
Маjко
Пока что оно всё таки глухое найтли
Денис
потому что у итератора для &[u8] Item = &u8, а фильтр принимает &Item :)
Маjко
Автодереференс не сработал что-ли?
Маjко
Мило
Денис
ну он не сработает для closure-то
Денис
fn check(v: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> { v.into_iter().filter(Filter { counter: 0 }) } fn main() { let c: Vec<_> = check(vec![1, 2, 3].into_iter()).collect(); println!("{:?}", c); } если так делать, то нужен только один референс)
Денис
impl<'a> FnMut<(&'a u8,)> for Filter {...
Маjко
Радуюсь, что у меня там везде поглощающие итераторы
Денис
fn check(v: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> { struct Storage(usize); let mut f = Storage(0); let clsr = move |val: &u8| -> bool { f.0 += 1; println!("#{}", f.0); val != &0 }; v.into_iter().filter(clsr) } fn main() { let c: Vec<_> = check(vec![1, 2, 3].into_iter()).collect(); println!("{:?}", c); }
Денис
тоже работает
Денис
и let mut f = Storage(0); v.into_iter().filter(move |val: &u8| -> bool { f.0 += 1; println!("#{}", f.0); val != &0 })
Денис
... и v.into_iter().filter(move |val| { f.0 += 1; println!("#{}", f.0); val != &0 })
Денис
без извращения с имплементированием FnMut и прочего
Денис
надо спать в общем
Маjко
Фак.
Денис
надо было сразу move попробовать
Денис
сорян)
Маjко
Да мой косяк, надо было сразу с move попробовать [2]
Маjко
Спасибо энивей)
Денис
Не за что)))
Marat
Я все таки на нее перешел, задолбали глюки вскодного плагина с воркспейсами
А у тебя не было такого, что rls-vscode на найтли проектах перекомпилирует что карго скомпилировал и наоборот?
Маjко
А у тебя не было такого, что rls-vscode на найтли проектах перекомпилирует что карго скомпилировал и наоборот?
У меня есть такое что rls вообще не работает на проекте больше хелловорлда с найтли А плагин от kalitaalexey с cargo check при использовании cargo workspaces пути неправильные в отчет пихает
Маjко
А как у тебя не, не было
доня.
а что вы хотели, игрушечному языку — игрушечные IDE
Маjко
Это не шутка?
Маjко
(мало ли, часовые пояса там, итд)
Anton
я наоборот в vscode вернулся
Anton
плагин для vscode чуть лучше сделали, реже вылетает
Anton
ну и автоформатирование
Anton
я не могу идеей именно как редактором все же пользоваться
Anton
мультикурсоры ад
Маjко
Ух, жесть.
Anton
работа с выделением ад
Anton
так что пока от идеи ушел
Anton
хотя там куда лучше хинты, проверки и тд
Anton
но оно дико тормозит все же(((
Маjко
ну и автоформатирование
cargo fmt в консоли не? Еще есть вариант сразу нормально форматировать руками :))
Anton
ну и как редактор куда лучше работает имхо
Маjко
но оно дико тормозит все же(((
Есть такое, да( На ноуте не могу юзать, на десктопе почти незаметно
Anton
из идеи именно как редактор кода ад
Anton
плюс автокомплит ждать по 5 секунд
Anton
ну это такое
Anton
я в гугл успею быстрее залезть
Маjко
Ну с подсветкой синтаксиса норм) Так то да
Marat
я в гугл успею быстрее залезть
А у тебя с rls-vscode и найтли все норм? Или ты другой плагин используешь?
Маjко
я в гугл успею быстрее залезть
Бля, вот реально, тот момент, когда у тебя 8 ядер, 24 гига памяти, а идея все равно тормозит
Anton
как то так
Дмитрий
привет всем. у меня такая задача, хотелось бы сделать модуль(с константами) вынести в отдельный файл, чтобы содержимое его было видно только в некоторых модулях, для кого он предназначен. можно ли такое реализовать?
Anton
https://rustbyexample.com/mod/visibility.html
Anton
pub(in my_mod) fn public_function_in_my_mod() { print!("called my_mod::nested::public_function_in_my_mod(), that\n > "); public_function_in_nested() }
Anton
что то такое?
Anton
хотя перечисления нет - сделай pub(crate)
Anton
внутри тебя будет видно по всем модулям - наружу нет
Anton
Если я правильно понял тебя
Маjко
Можно и проще: просто объявить как модуль в мейне без кейворда pub
Маjко
Наружу ничего не будет видно, внутри всё будет
Anton
если моуль в отделььном файле - не проканает
Дмитрий
да, я уже сделал.
Дмитрий
когда файл находится в отдельной директории, то выносим данные в отдельный файл