Dmitry
fold с дефолтным false и "если есть" то сравнить
kitsu
зачем по всему итератору пробегаться
Dmitry
An iterator method that applies a function, producing a single, final value.
Anton
Ну задача такая: найти элемент, удовлетворяющий условию, и вернуть на него ссылку
Anton
Сейчас попробую с fold'ом
Cat
а не свернуть
Dmitry
fn main() { let hue = Some(2).iter().fold(false, |x,y| y == &2); println!("Hello, world! {}", hue); }
Dmitry
а не свернуть
"свернуть" на опшнл
Dmitry
а не на итераторе внешнем
Dmitry
player.socket свернуть в bool
Cat
эм..
Cat
окей
Dmitry
¯\_(ツ)_/¯
Dmitry
катаморфизм
Cat
так а зачем фолд-то тогда?
Dmitry
фильтр и проверку на то что осталось
Cat
ладно, я просто не догоняю видимо
Dmitry
так а зачем фолд-то тогда?
ну изначально был вопрос "как сравнить то что в опшнле с тем что снаружи но без матча"
Dmitry
или около того
Dmitry
это можно сделать свернув опшнл в бул
Cat
map?
Anton
Что-то он на fold ругается)
Anton
Один момент
Dmitry
map не должен подойти, он ведь не зайдет в сравнение если там пусто. придется в конце брать orElse
Dmitry
Что-то он на fold ругается)
ну я тебе с плейграунда скопировал :) там не ругается
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
А, точно
Anton
Да, вроде помогло
Anton
Теперь попробую через filter_map)
Anton
if optvalue == Some(42) ??
Так не работало
Dmitry
filter_map точно будет лучше :)
Alex
Так не работало
https://play.rust-lang.org/?gist=1787b38651c3ad78ec2a2a7ea1b9eb9e&version=stable&mode=debug&edition=2015
Alex
А у меня раотает
Anton
Ну там проблема была в том, что он мувал значение
Anton
С двойкой-то понятно, что работает
Anton
Хм
Cat
странная ситуация
Cat
никак не могу понять, куда итератор мувал значение
Dmitry
може Some мувал?
Anton
Внутрь Some
Cat
??? ладно, всё равно не понимаю, вы лучше шарите anyway
Anton
as_ref?
А это у чего?
Alex
у Option
Anton
Не, не выходит
Cat
значит только fold /sarcasm
kitsu
as_ref кстати да, должен зайти
Anton
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
никаких правил времени жизни она не привносит
Alex
а * из под ссылки вытаскивает?
Anton
Вот с мувами я тоже не конца понимаю
Anton
Если у меня есть ссылка a и я пишу match a { &b => ... }
Anton
То в каком статусе у меня будет b? Я его не могу мувать?
Anton
Ну тип у него будет уже не &T, а T
Anton
Но при этом мувать нельзя?