Маjко
Хотя с другой стороны с ним сразу понятно, что принимается трейт (но надо ли это — не уверен)
Anton
fn filter<P😠self, predicate: P) -> Filter<Self, P> where
P: FnMut(&Self::Item) -> bool,
Anton
может в будущем будут trait из функций генерить =)
Anton
Да и парсер чтобы сильно не переделывать
Маjко
Окей, смысл есть, но все равно по эргономике это как-то так себе, учитывая что фича часто используемая
Маjко
Тут был товарищ, пишущий плагин для идеи, можете кинуть контакт?
trfc
Ма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ко
Пока что оно всё таки глухое найтли
Ма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ко
Спасибо энивей)
Денис
Не за что)))
Маjко
А как у тебя не, не было
доня.
а что вы хотели, игрушечному языку — игрушечные IDE
Marat
Маjко
Это не шутка?
Маjко
(мало ли, часовые пояса там, итд)
Anton
я наоборот в vscode вернулся
Anton
плагин для vscode чуть лучше сделали, реже вылетает
Anton
ну и автоформатирование
Anton
я не могу идеей именно как редактором все же пользоваться
Anton
мультикурсоры ад
Маjко
Ух, жесть.
Anton
работа с выделением ад
Anton
так что пока от идеи ушел
Anton
хотя там куда лучше хинты, проверки и тд
Anton
но оно дико тормозит все же(((
Anton
Anton
ну и как редактор куда лучше работает имхо
Anton
из идеи именно как редактор кода ад
Anton
плюс автокомплит ждать по 5 секунд
Anton
ну это такое
Anton
я в гугл успею быстрее залезть
Маjко
Ну с подсветкой синтаксиса норм)
Так то да
Anton
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
если моуль в отделььном файле - не проканает
Дмитрий
да, я уже сделал.
Дмитрий
когда файл находится в отдельной директории, то выносим данные в отдельный файл