Aler
я просто изучаю проект на раст и там такой код:
encoding_struct! {
struct Wallet {
const SIZE = 48;
pub_key: &PublicKey [00 => 32]
name: &str [32 => 40]
balance: u64 [40 => 48]
}
}
Vladislav
меня и так все зовут Владик
Vladislav
ну кроме бч
Vladislav
там закрепилось другое
Aler
я хочу его завернуть в другой макрос и добавить функционала, но и encoding_struct оставить
Vladislav
Vladislav
в жизни никто не зовет по фамилии или вот так
Aler
ой дяди я ошибся
Aler
или нет)
Aler
ладно, буду думать, не буду флудить в чат
Filipp
вот этот макрос делает что-то похожое на то, что ты описываешь
https://github.com/gfx-rs/gfx/blob/8684e8cdc40afb5e7d17401477e8764279921c65/src/render/src/macros/mod.rs#L138
Filipp
что такое бч?
Vladislav
Aler
так я что-то совсем запустался
Aler
когда из одного макроса создаешься другой он токены не парсит заного?
Aler
сделать чтоли обычную кодогенерацию..
Tomato
блокчейн
Oleg
Бородатые частушки
Berkus
чюваки, чюваки, а для раста есть штука похожая на http://natty.joestelmach.com/ ?
vladislav
@berkus https://github.com/rust-unofficial/awesome-rust/blob/master/README.md тут вся годнота, похожего не нашёл.
Berkus
спасибо за годноту
Berkus
жаль что нету такой либы
Loo
Berkus
если кто портанет - пришлю пива )
vladislav
FFI юзай, если очень сильно нужна
Berkus
но она на джаве
Berkus
я ебанусь jvm с собой таскать )
Filipp
в питоне такая тоже есть
Berkus
а, это вариант кстати!
Filipp
https://dateparser.readthedocs.io/en/latest/
Filipp
я даже в нее законтрибутил "послезавтра" и "позавчера"
Anonymous
Berkus
это что
Anonymous
это что
http://openjdk.java.net/jeps/282
Berkus
я смотрю там в расте дофига интерфейсов к jvm и так
Sergey
Berkus
шта
https://github.com/rust-unofficial/awesome-rust/blob/master/README.md#ffi вот тут в подразделе Java
Sergey
аа, ты об этом
Anton
Berkus
так, а в расте operator overloading не присутствует?
Berkus
как я могу сделать a = b * c + x; для векторов или матриц?
Anonymous
трейты
Anonymous
это не называется operator overloading в расте
Berkus
трейтами я могу именно такой синтаксис реализовать?
Anonymous
https://doc.rust-lang.org/std/ops/trait.Mul.html
доня.
Berkus
ага, спасибо, отлично!
Aler
коллеги, посовейте как красиво извлечь из tuple второй элемент
Aler
self.players().iter().find(|key: &PublicKey, p: Player| { p.x() == x && p.y() == y })
Max
p.1
Max
(если p - типаж)
Aler
не, типаж в | | попадает как раз
Aler
players это коллекция типажей (PublicKey, Player)
доня.
так падажжите
доня.
кортежи
доня.
не типажи
доня.
типажи это traits
Aler
да, точно.
Max
https://doc.rust-lang.org/std/primitive.tuple.html
доня.
а то вы меня запутали совсем
Aler
это меня лис спутал)
доня.
ох уж етот лис
Max
ой, я tuple и типаж перепутал
только не бейте
доня.
тобi пизда
доня.
текай с городу
Aler
но .1 задачу не решает)
Aler
find() отдает Option<(PublicKey, Player)>
Aler
pub fn getAt(&mut self, x: i32, y: i32) -> Option<Player> {
let players = self.players();
let found = players.iter().find(|p| { p.1.x() == x && p.1.y() == y });
match found {
Some(result) => Some(result.1),
None => None
}
}
Aler
вот так сделал
Aler
до поиска?
Aler
это не будет дороже?
Anton
found.map(|e| e.1)
Anton
вместо матчинга
Aler
почему это работает?)
Aler
я думал .map это для коллекций
Aler
но спасибо