#prog #rust #c
В C принято для функций-компараторов в сортировке возвращать целое число, где отрицательное значение означает, что первый элемент меньше второго, положительное — что первый элемент больше второго, а ноль — что элементы равны. В Rust же для этих целей используют отдельный тип Ordering. Между ними очень просто конвертироваться.
Из C в Rust:
В C принято для функций-компараторов в сортировке возвращать целое число, где отрицательное значение означает, что первый элемент меньше второго, положительное — что первый элемент больше второго, а ноль — что элементы равны. В Rust же для этих целей используют отдельный тип Ordering. Между ними очень просто конвертироваться.
Из C в Rust:
fn c_order_to_rust_order(o: c_int) -> Ordering {
o.cmp(&0)
}
Из Rust в C:fn rust_order_to_c_order(o: Ordering) -> c_int {
o as c_int
}
Второе работает за счёт дискриминантов на вариантах Ordering, расставленных ещё до релиза Rust 1.0. Определение Ordering, если опустить аннотации, выглядит так:#[repr(i8)]
pub enum Ordering {
Less = -1,
Equal = 0,
Greater = 1,
}
Неудивительно, что rust_order_to_c_order компилируется в единственный mov (возможно, с sign extension, в зависимости от того, в какой конкретно тип кастовать).doc.rust-lang.org
Ordering in std::cmp - Rust
An `Ordering` is the result of a comparison between two values.
👍11❤2🤨1
Forwarded from Таксики и лытдыбр σποραδικος
К 25 в моей жизни остались два типа ночных кошмаров: кто-то умер и заполнение документов
Откровенно говоря, я не уверена, какой страшнее
Откровенно говоря, я не уверена, какой страшнее
❤5🤔2👎1
Ах, кстати, сегодня три года исполнилось Блог*у. Только я и не знаю, что писать, ничего в голову не идёт
🎉22🔥1
В GCC для представления AST используется тип
А теперь найдите мне там определение
UPD: тут (в coretypes.h) и тут. Спасибо @synrst
tree, который шарится между всеми языками. По идее, его определение находится в tree-core.h.А теперь найдите мне там определение
tree. Не tree_base, а именно tree. Я вот не нашёл.UPD: тут (в coretypes.h) и тут. Спасибо @synrst
GitHub
gcc/tree-core.h at master · gcc-mirror/gcc
Contribute to gcc-mirror/gcc development by creating an account on GitHub.
😁2
Forwarded from Awesome Rust
Launching the 2022 State of Rust Survey
https://blog.rust-lang.org/2022/12/05/survey-launch.html
https://blog.rust-lang.org/2022/12/05/survey-launch.html
👍6
Блог*
#prog Awesome Falsehood — A curated list of falsehoods programmers believe in.
Хабр
Заблуждения программистов о времени
Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел» Для...
🇺🇦 Go for two :)
The [adventofcode] just started Happy hacking! https://adventofcode.com/2022/day/1
#prog #rust #моё
Если вам вдруг интересно, какой ужас я пишу для решения, то вот: github.com/AnthonyMikh/AoC
Если вам вдруг интересно, какой ужас я пишу для решения, то вот: github.com/AnthonyMikh/AoC
🔥2