Блог*
Open in Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
Show more1 948
Subscribers
+124 hours
+237 days
+2430 days
Posts Archive
1 949
#prog #rust
document-features — макрос для генерирования документации по фичам крейта. Фактически реализует док-комментарии для фич в Cargo.toml:
[dependencies]
document-features = "0.1"
## ...
[features]
## The foo feature enables the `foo` functions
foo = []
## The bar feature enables the [`bar`] module
bar = []
#! ### Experimental features
#! The following features are experimental
## Activate the fusion reactor
fusion = []
...И всё это в итоге преобразовывается макросом document_features::document_features! в строку, которую можно вставить в #[doc]1 949
TL;DR того, что случилось за 3 часа стрима:
— Кратко рассказал о том, что было на предыдущем стриме
— Написал небольшой типчик
Mrc<_>, который по сути немного-более-безопасный указатель
— Переписал крейт с использования StaticRc, на Mrc
— Попытался написать {l,r}get_mut, понял что для BiHashMap такие методы не имеют смысла, разочаровался в жизни и впал в уныние
— Написал метод lreplace
— Неудачно попытался добавить проверки корнер кейсов в insert
— Долго пытался исправить проверки и избавиться от UB
— Придумал как правильно и просто написать проверки корнер кейсов в insert (оказалось почти совсем просто)
Итоговая реализация insert греет мне душу :)1 949
remove_убешки
#[deny(PartialEq)]"Это так раздражает, что insert ничего не меняет" "Нам просто нужен entry API" "Формат убил мои комментарии" #wafflecontext
1 949
Блин, нахрена я решил решать задачи с Leetcode на C++. Очень больно из-за тупо отсутствующих возможностей и стандартной библиотеки версии C++17. span-ов нету, range-ей нету. И кто, блин, вообще придумал, что
pop_{front, back} возвращает void вместо T, да ещё и с UB на пустом контейнере?1 949
Вчера я провёл стрим, где начал писать двухсторонюю хэшмапу. Т.е. если в обычной
HashMap отношение K -> V, то в BiHashMap отношение K <-> K'.
Всё пошло не так, как бы хотелось (я это ожидал и поэтому не публиковал тут ссылку на стрим), но в итоге я смог написать BiHashMap с парой самых базовых методов вроде insert и lget.
Вот тут можно посмотреть запись с вырезанными попытками починить стрим.
Я вроде смог настроить obs так, чтобы стрим больше не лагал, так что завтра продолжу писать BiHashMap, там ещё много чего надо сделать:
— Перейти с StaticRc на что-то другое (на стриме объясню почему)
— Дописать остальные методы, только с new, insert и lget в этом всём нет смысла
— Написать итераторы
— etc
Завтра, вс, 2022-02-13, ~16:00 @ twitch.tv/wafflelapkin1 949
Где-то — увы, не помню уже, где — читал про критерий роста себя, как писателя. Мол, если ты читаешь свои старые тексты годичной давности и они не вызывают у тебя желания переписать их, то ты остановился в развитии.
С применением этого принципа к себе у меня есть затруднения. С кодом это более-менее работает, а вот с текстами авторских постов — нет. Когда я перечитываю старые посты, у меня, бывает, возникает желание переписать некоторые корявые формулировки (а они бывают в силу того, что я пишу сразу начисто), но никогда не бывает желания переписать с нуля.
В предположении об истинности этого принципа возможны два случая. Первый — выглядящий крайне нереалистичным — то, что я уже пишу практически идеально. Второй — я действительно не развиваюсь и слеп к собственным недостаткам. В связи с этим я бы хотел узнать ваше мнение.
Что вы думаете о том, как я пишу? Что есть хорошего, а что стоит поменять? Хочу отметить, что я спрашиваю именно о слоге, а не о тематике.
1 949
🐝🗺
(и нет, Вафель, вот в этой ситуации использование хештега #wafflecontext более чем уместно)
1 949
Наконец-то посмотрел более продвинутый доклад от того же автора:
— C++ and Beyond 2012: Herb Sutter - atomic Weapons 1 of 2
— C++ and Beyond 2012: Herb Sutter - atomic Weapons 2 of 2
Тоже очень интересный доклад, хоть и совсем не настолько beginner-friendly. Если вам интересно не только, как в общем работают атомики, но и почему они так работают и как использовать не
SeqCst ордеринги — рекомендую!1 949
#prog #rust #article от Амоса (и чуток про #go)
Some mistakes Rust doesn't catch
(thanks @ihatereality)
