Dmitry
fold с дефолтным false и "если есть" то сравнить
kitsu
зачем по всему итератору пробегаться
Dmitry
An iterator method that applies a function, producing a single, final value.
Anton
Ну задача такая: найти элемент, удовлетворяющий условию, и вернуть на него ссылку
Anton
Сейчас попробую с fold'ом
Cat
Cat
а не свернуть
Dmitry
fn main() {
let hue = Some(2).iter().fold(false, |x,y| y == &2);
println!("Hello, world! {}", hue);
}
Dmitry
а не на итераторе внешнем
Dmitry
player.socket свернуть в bool
Cat
эм..
Cat
окей
Dmitry
¯\_(ツ)_/¯
kitsu
Dmitry
катаморфизм
Dmitry
Cat
так а зачем фолд-то тогда?
Dmitry
фильтр и проверку на то что осталось
Cat
ладно, я просто не догоняю видимо
Dmitry
так а зачем фолд-то тогда?
ну изначально был вопрос "как сравнить то что в опшнле с тем что снаружи но без матча"
Dmitry
или около того
Dmitry
это можно сделать свернув опшнл в бул
Cat
map?
Cat
Anton
Что-то он на fold ругается)
Anton
Один момент
Dmitry
map не должен подойти, он ведь не зайдет в сравнение если там пусто. придется в конце брать orElse
Cat
Anton
no method named fold found for type std::option::Option<std::rc::Rc<std::cell::RefCell<ws::Sender>>> in the current scope
Dmitry
Some(2).iter()
Anton
А, точно
Alex
Anton
Да, вроде помогло
Anton
Теперь попробую через filter_map)
Anton
Dmitry
filter_map точно будет лучше :)
Alex
Так не работало
https://play.rust-lang.org/?gist=1787b38651c3ad78ec2a2a7ea1b9eb9e&version=stable&mode=debug&edition=2015
Alex
А у меня раотает
Anton
Ну там проблема была в том, что он мувал значение
Anton
С двойкой-то понятно, что работает
Cat
Anton
Хм
Alex
Cat
странная ситуация
Cat
никак не могу понять, куда итератор мувал значение
Dmitry
може Some мувал?
Anton
Внутрь Some
Cat
???
ладно, всё равно не понимаю, вы лучше шарите anyway
Anton
Alex
у Option
Anton
Не, не выходит
Cat
значит только fold
/sarcasm
kitsu
as_ref кстати да, должен зайти
kitsu
5 сек
kitsu
https://play.rust-lang.org/?gist=b657c53d9b38e2f90cb8f322150abb5a&version=stable&mode=debug&edition=2015
Anton
А, да, кажется, получилось
Anton
Надо бы разобраться с ними уже
Anton
Всё, вроде понял
Anton
Спасибо)
Alex
а я разницу между ref * и & до сих пор не понимаю
Anton
Я понимаю разницу между & и ref в матчинге
Alex
в чем она?
Anton
Одна вынимает из под ссылки, а другая наоборот, засовывает под ссылку
Cat
да (почти)
Cat
https://github.com/rust-lang/rust-by-example/issues/390
Anton
Потому что в выражении под матчингом все операции обратны обычным
Alex
как достаю из под ссылки? а ссылка продолжает жить потом?
Cat
Cat
Cat
никаких правил времени жизни она не привносит
Alex
а * из под ссылки вытаскивает?
Anton
Вот с мувами я тоже не конца понимаю
Anton
Если у меня есть ссылка a и я пишу
match a {
&b => ...
}
Anton
То в каком статусе у меня будет b? Я его не могу мувать?
Cat
Anton
Ну тип у него будет уже не &T, а T
Anton
Но при этом мувать нельзя?