Forwarded from мне не нравится реальность
\/\/\/((.*)(?:[^\]][^:])|) [^\[`]\w+::
Love using regexes, they are very readable and easy to grasp ❤️💩4
Forwarded from Технологический Болт Генона
This media is not supported in your browser
VIEW IN TELEGRAM
Начинаем среду с полезной информации
🌚7😁5💩3
#politota
Роскомпозор утвердил список критериев пропаганды ЛГБТ. Что ж, ко мне они не применимы: если я, будучи бисексуалом, и создаю какой-то образ об ЛГБТ, то явно не положительный 🥴
Роскомпозор утвердил список критериев пропаганды ЛГБТ. Что ж, ко мне они не применимы: если я, будучи бисексуалом, и создаю какой-то образ об ЛГБТ, то явно не положительный 🥴
Telegram
ТАСС
Роскомнадзор утвердил критерии оценки материалов, содержащих пропаганду ЛГБТ.
Ресурсы будут включать в Единый реестр запрещенных сайтов Роскомнадзора за публикацию:
◾️информации, вызывающей интерес к нетрадиционным сексуальным отношениям;
◾️информации…
Ресурсы будут включать в Единый реестр запрещенных сайтов Роскомнадзора за публикацию:
◾️информации, вызывающей интерес к нетрадиционным сексуальным отношениям;
◾️информации…
😁10❤4💩2
Блог*
#politota Роскомпозор утвердил список критериев пропаганды ЛГБТ. Что ж, ко мне они не применимы: если я, будучи бисексуалом, и создаю какой-то образ об ЛГБТ, то явно не положительный 🥴
Ну а если серьёзно — это позор, конечно, как я уже и говорил. Особенно "радует" пункт:
> ◾️информации, направленной на формирование искаженного представления о социальной равноценности традиционных и нетрадиционных сексуальных отношений;
То есть высказываться об ЛГБТ даже нейтрально де-юре будет противозаконно. Мрази, а 😒
> ◾️информации, направленной на формирование искаженного представления о социальной равноценности традиционных и нетрадиционных сексуальных отношений;
То есть высказываться об ЛГБТ даже нейтрально де-юре будет противозаконно. Мрази, а 😒
🤮9💩5👍1
#prog #rust #rustreleasenotes
Вышла версия Rust 1.69.0! Как всегда, расскажу только о том, что интересует меня, а об остальном читайте в ченджлоге.
▪️Создание невыровненных ссылок на поля packed-структур наконец-то является ошибкой компиляции, которую нельзя подавить линтом.
▪️Так как изменение выше сломало некоторый (очень) старый код, derive-макросы теперь имеют меньше ограничений при использовании на packed типах.
▪️В union теперь можно использовать типы, определённые через ассоциированные типы трейтов. Даже странно, что раньше было нельзя.
▪️Методы трейтов не могут быть вызваны на dyn-объектах, если у них есть ограничения на Self. В принципе, это логично, поскольку апкаст до трейт-объекта стирает тип, и определить в рантайме, реализовывал ли изначальный тип трейт, нельзя. С другой стороны, auto-трейты не имеют никаких методов и потому не добавляют новых записей в vtable. Начиная с этой версии Rust, на трейт-объектах можно вызывать методы трейтов с баундами вида where Self: AutoTrait. При этом вызывать можно будет только для трейт-объектов, у которых через + эти auto-трейты указаны.
Иными словами, если
, то
▪️До релиза докатился фикс бага компилятора (&*).
▪️Поиск в rustdoc теперь ищет лишь макросы, если запрос оканчивается на !.
▪️Стабилизировали CStr::from_bytes_until_nul, который сам ищет первый nul-байт в переданном слайсе (и возвращает ошибку, если их нету вовсе).
▪️Cargo теперь по умолчанию собирает build-зависимости без отладочной информации, если они потом не используются для сборки итогового бинаря как runtime-зависимости. Автор провёл замеры и показал, что это действительно ускоряет компиляцию.
Вышла версия Rust 1.69.0! Как всегда, расскажу только о том, что интересует меня, а об остальном читайте в ченджлоге.
▪️Создание невыровненных ссылок на поля packed-структур наконец-то является ошибкой компиляции, которую нельзя подавить линтом.
▪️Так как изменение выше сломало некоторый (очень) старый код, derive-макросы теперь имеют меньше ограничений при использовании на packed типах.
▪️В union теперь можно использовать типы, определённые через ассоциированные типы трейтов. Даже странно, что раньше было нельзя.
▪️Методы трейтов не могут быть вызваны на dyn-объектах, если у них есть ограничения на Self. В принципе, это логично, поскольку апкаст до трейт-объекта стирает тип, и определить в рантайме, реализовывал ли изначальный тип трейт, нельзя. С другой стороны, auto-трейты не имеют никаких методов и потому не добавляют новых записей в vtable. Начиная с этой версии Rust, на трейт-объектах можно вызывать методы трейтов с баундами вида where Self: AutoTrait. При этом вызывать можно будет только для трейт-объектов, у которых через + эти auto-трейты указаны.
Иными словами, если
trait Trait {
fn foo(&self) where Self: Sync;
}
, то
foo
можно вызвать на dyn Trait + Sync
, но нельзя на dyn Trait
.▪️До релиза докатился фикс бага компилятора (&*).
▪️Поиск в rustdoc теперь ищет лишь макросы, если запрос оканчивается на !.
▪️Стабилизировали CStr::from_bytes_until_nul, который сам ищет первый nul-байт в переданном слайсе (и возвращает ошибку, если их нету вовсе).
▪️Cargo теперь по умолчанию собирает build-зависимости без отладочной информации, если они потом не используются для сборки итогового бинаря как runtime-зависимости. Автор провёл замеры и показал, что это действительно ускоряет компиляцию.
blog.rust-lang.org
Announcing Rust 1.69.0 | Rust Blog
Empowering everyone to build reliable and efficient software.
👍12❤4💩1
Forwarded from мне не нравится реальность
В общем и целом читайте блог и ченджлог, но я хочу подчеркнуть одно конкретное изменение:
— Allow Self: Autotrait bounds on dyn-safe trait methods.
В целом это всё и говорит, но всё же давайте по-подробнее.
Автотрейты это трейты которые реализуются автоматически для структур у которых все поля реализуют данный трейт. Известными примерами автотрейтов являются
Далее.
Так вот! Единственное исключение для запрещения
Но это значит что и
*кроме
**но рано или поздно так тоже можно будет, надеюсь... (какая-то работа в этой сфере есть)
***конкретнее он разрешил
— Allow Self: Autotrait bounds on dyn-safe trait methods.
В целом это всё и говорит, но всё же давайте по-подробнее.
Автотрейты это трейты которые реализуются автоматически для структур у которых все поля реализуют данный трейт. Известными примерами автотрейтов являются
Send
и Sync
. Одним из условий автотрейтов является то, что автотрейт не должен иметь никаких item'ов (ассоциированных функций, констант и типов), это должен быть просто маркер.Далее.
dyn Trait
это механизм стирания типов, пропуская подробности &dyn Trait
хранит в себе кроме ссылки на данные (некоторый тип реализующий Trait
) ещё и указатель на VTable
— структуру с указателями на реализации функций трейта. Чтобы трейт годился для использования с dyn
он должен исполнять некоторые требования (которые нужны для того, чтобы можно было создать VTable
). Одно из требований — у функций не должно быть Self: SomeTrait
ограничений*. Это требование вызвано тем, что такое ограничение не может быть выполнено в dyn
варианте, нельзя написать dyn TraitA + TraitB
. Невозможность комбинировать dyn
трейты в свою очередь вызвана сложностью комбинирования VTable
**.Так вот! Единственное исключение для запрещения
dyn A + B
— автотрейты, поскольку у них не может быть методов, они не изменяют VTable
и соответственно их можно тривиально разрешить.Но это значит что и
Self: AutoTrait
имеет смысл для dyn
как метод который можно вызвать на dyn Trait + AutoTrait
. Этот PR и добавил эту возможность***.*кроме
Self: Sized
, которое просто выпиливает функцию из dyn
.**но рано или поздно так тоже можно будет, надеюсь... (какая-то работа в этой сфере есть)
***конкретнее он разрешил
Self: Auto
для object-safe трейтов.👍4💩1
Блог*
#prog #rust #rustreleasenotes Вышла версия Rust 1.69.0! Как всегда, расскажу только о том, что интересует меня, а об остальном читайте в ченджлоге. ▪️Создание невыровненных ссылок на поля packed-структур наконец-то является ошибкой компиляции, которую нельзя…
Неудобно писать release notes на телефоне, м-да
💩1
0.1 + 0.2 =
Anonymous Poll
13%
0.3
60%
0.30000000000000004
3%
0.10.2
24%
error: lvalue required as left operand of assignment
🤷2👍1💩1