Size: a a a

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

2020 April 04

АВ

Андрей Власов in Rust — русскоговорящее сообществo
polunin.ai
Я вписывал, и вроде ок было. Хотя хз что там в Lines
Давай код
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Андрей Власов
Давай код
type Item = &'a Token;
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Этот итератор возвращает ссылку на своё поле?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Этот итератор содержит в себе ссылки, и возвращает эти ссылки
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Значит это не наш кейс
источник

M

Marat in Rust — русскоговорящее сообществo
Эрик
Да и менять местами не очень, Some() очевидно чаще будет.
оптимизации при компиляции и предсказание бранчей в cpu никто не отменял, это не то место, где надо биться за производительность
источник

f

folex in Rust — русскоговорящее сообществo
А есть такой примитив синхронизации как Promise? Чтобы можно было сделать как-то так:
let map: HashMap<Key, Promise> = …;

fn call() -> impl Future {
 let promise = Promise::new();
 map.insert(key, promise);
 promise.to_future()
}

// somewhere
some_socket.on_message(|msg| => {
 let promise = self.map.get(msg.key).unwrap();
 promise.complete(msg)
}


Соответственно вызываешь call().then(|msg| async { println!(“{}”, msg) }), и потом когда данные придут, промис закомплитится, и println сработает.
источник

f

folex in Rust — русскоговорящее сообществo
Я в целом могу сам такой примитив написать на channel::oneshot, но не хотелось бы велосипедить
источник

AT

Alexander Tchitchigin in Rust — русскоговорящее сообществo
А почему прямо фьючи в мапе не хранить тогда?
источник

AT

Alexander Tchitchigin in Rust — русскоговорящее сообществo
Хотя вообще логичнее всё на каналах сделать - вообще без мапы, IMHO.
источник

f

folex in Rust — русскоговорящее сообществo
Alexander Tchitchigin
А почему прямо фьючи в мапе не хранить тогда?
А как фьючу комплитить?
источник

f

folex in Rust — русскоговорящее сообществo
Если можно вернуть незакомпличенную фьючу (или ссылку) из функции, а потом где-то внутри структуры закомплитить, то это то что мне нужно.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
folex
А есть такой примитив синхронизации как Promise? Чтобы можно было сделать как-то так:
let map: HashMap<Key, Promise> = …;

fn call() -> impl Future {
 let promise = Promise::new();
 map.insert(key, promise);
 promise.to_future()
}

// somewhere
some_socket.on_message(|msg| => {
 let promise = self.map.get(msg.key).unwrap();
 promise.complete(msg)
}


Соответственно вызываешь call().then(|msg| async { println!(“{}”, msg) }), и потом когда данные придут, промис закомплитится, и println сработает.
Я бы на каналах сделал
источник

f

folex in Rust — русскоговорящее сообществo
Alexander Tchitchigin
Хотя вообще логичнее всё на каналах сделать - вообще без мапы, IMHO.
А как без мапы это сделать? Нужно же где-то держать соответствие каналов и ключей.
источник

f

folex in Rust — русскоговорящее сообществo
polunin.ai
Я бы на каналах сделал
Возвращал бы из функции one_shot?
источник

f

folex in Rust — русскоговорящее сообществo
ну, его Receiver/Consumer часть
источник

C

Constantine in Rust — русскоговорящее сообществo
Interesting 🧐
источник

AT

Alexander Tchitchigin in Rust — русскоговорящее сообществo
folex
А как без мапы это сделать? Нужно же где-то держать соответствие каналов и ключей.
Да прямо ключи в канал и отправлять, а на другой стороне уже разбираться что с ним делать.
источник

n

n1 in Rust — русскоговорящее сообществo
Всем привет. Ставлю rust на первую малину (swap 2gb), но столкнулся с проблемой :
info: installing component 'rustc'
46.6 MiB /  65.9 MiB ( 71 % 1000.0 KiB/s in  1m 23s ETA: 19smemory allocation of 146221696 bytes failedAborted
источник

n

n1 in Rust — русскоговорящее сообществo
есть идеи как вылечить?
источник