😒🤚 Читать статьи Амоса, чтобы лучше знать Rust
😒🤚 Читать статьи Амоса, чтобы лучше ругать Go
😏👉 Читать статьи Амоса, чтобы расширять словарный запас
😒🤚 Читать статьи Амоса, чтобы лучше ругать Go
😏👉 Читать статьи Амоса, чтобы расширять словарный запас
🥰5👍2🤮1
<илья as Человек>
Я НАШЁЛ Я НАШЁЛ ТУ САМУЮ СТАТЬЮ ГДЕ ПОКАЗЫВАЕТСЯ ПЛОХАЯ СТОРОНАЯ ГО И СРАВНИВАЕТСЯ С РАСТОМ https://fasterthanli.me/articles/i-want-off-mr-golangs-wild-ride
fasterthanli.me
Lies we tell ourselves to keep using Golang
In the two years since I've posted I want off Mr Golang's Wild Ride, it's made the rounds time and time again, on Reddit, on Lobste.rs, on HackerNews, and elsewhere. And every time, it elicits the ...
👍2
Почему программисты, использующие динамически типизированные ЯП, не смотрят в сторону статически типизированных? Потому что статическая типизация нарезает круги вокруг динамической, и у тех, кто пытается следить за первым, начинает кружиться голова
🤔16🤮2👍1
Forwarded from Life of Tau
#prog #rust
Хозяйке на заметку
Иногда таки возникает такая задача: взять мутабельные ссылки на два элемента слайса. В лоб написать
Первый — обойтись исключительно safe-кодом. В этом случае мы разделяем слайс по индексам и вынимаем ссылки на концы сегментов. Вот один из способов, как это можно сделать:
Другой путь — это использовать немного unsafe, чтобы обойти ограничения borrow checker-а:
Во-первых, мы используем обычный функционал индексирования для того, чтобы получить ссылки на элементы, поэтому индексы проверяются и функция паникует, если какой-то из них окажется за пределами слайса.
Во-вторых, мы явно проверяем при помощи
В-третьих, не смотря на то, что мы образуем ссылку из сырого указателя, благодаря lifetime elision время жизни этой ссылки будет такое же, как и у входной ссылки на слайс. Иными словами, мы не делаем ссылки более долгоживущими, чем надо.
Можете использовать этот код без ограничений.
Хозяйке на заметку
Иногда таки возникает такая задача: взять мутабельные ссылки на два элемента слайса. В лоб написать
let (x, y) = (&mut arr[i], &mut arr[j]);
не получится — borrow checker не даст. И тут есть два пути.Первый — обойтись исключительно safe-кодом. В этом случае мы разделяем слайс по индексам и вынимаем ссылки на концы сегментов. Вот один из способов, как это можно сделать:
fn get_two_mut<T>(
arr: &mut [T],
idx1: usize,
idx2: usize,
) -> (&mut T, &mut T) {
let (ifirst, isecond) = (
idx1.min(idx2),
idx1.max(idx2),
);
let (first, last) = match &mut arr[ifirst..=isecond] {
[first, .., last] => (first, last),
_ => panic!("overlapping indices"),
};
if ifirst == idx1 {
(first, last)
} else {
(last, first)
}
}
Это рабочее решение, но тут многовато операций, да и перестановка ссылок в соответствие с индексами выглядит некрасиво.Другой путь — это использовать немного unsafe, чтобы обойти ограничения borrow checker-а:
fn get_two_mut<T>(
arr: &mut [T],
idx1: usize,
idx2: usize)
-> (&mut T, &mut T) {
assert_ne!(idx1, idx2);
let a: *mut T = &mut arr[idx1];
let b: *mut T = &mut arr[idx2];
unsafe { (&mut *a, &mut *b) }
}
Что же делает эту реализацию sound?Во-первых, мы используем обычный функционал индексирования для того, чтобы получить ссылки на элементы, поэтому индексы проверяются и функция паникует, если какой-то из них окажется за пределами слайса.
Во-вторых, мы явно проверяем при помощи
assert_ne!
, что индексы не равны, поэтому возвращаемые ссылки заведомо не указывают на одну и ту же область памяти.В-третьих, не смотря на то, что мы образуем ссылку из сырого указателя, благодаря lifetime elision время жизни этой ссылки будет такое же, как и у входной ссылки на слайс. Иными словами, мы не делаем ссылки более долгоживущими, чем надо.
Можете использовать этот код без ограничений.
Telegram
Блог*
#prog #rust #моё
В Rust в некоторых случаях можно использовать анонимный лайфтайм ('_). Практика показывает, что эта фича некоторым не до конца понятна, поэтому я решил написать об этом подробнее.
Времена жизни — пожалуй, именно та фича, которая больше…
В Rust в некоторых случаях можно использовать анонимный лайфтайм ('_). Практика показывает, что эта фича некоторым не до конца понятна, поэтому я решил написать об этом подробнее.
Времена жизни — пожалуй, именно та фича, которая больше…
👍7
Forwarded from Блог погромиста
В рот мне декоратор! Сегодня мне написали товарищи с Хабра - я, оказывается, победил в технотексте-2021 со своей статьёй про собеседование в Яндекс 🤷♂ И пока я жду грузовики, наполненные доверху бабосами (хотя, кажется, подарят всё-таки просто толстовку), продолжаю писать новую статью. Писать статьи сложно, и, к сожалению, идей у меня значительно больше, чем сил для их написания. Ну штош... Дорогу осилит идущий.
https://habr.com/ru/post/550088/
https://habr.com/ru/post/550088/
👍3
#prog #scala #article
Есть статья от Олега Нижника об экспериментальной новой фиче в Scala 3 — capture checking, опубликованная 14 февраля.
Есть OTUS, которая на Хабре известна своими многочисленными дерьмовыми переводами.
Что мы получим, если их соединим?
Комедию в двух актах!
Акт первый (перевод статьи от OTUS от 5 марта, с плохим переводом).
Акт второй (перевод той же самой статьи от OTUS от 7 июня, с другим, но всё ещё плохим переводом).
Клоуны, блин. 🤡
Есть статья от Олега Нижника об экспериментальной новой фиче в Scala 3 — capture checking, опубликованная 14 февраля.
Есть OTUS, которая на Хабре известна своими многочисленными дерьмовыми переводами.
Что мы получим, если их соединим?
Комедию в двух актах!
Акт первый (перевод статьи от OTUS от 5 марта, с плохим переводом).
Акт второй (перевод той же самой статьи от OTUS от 7 июня, с другим, но всё ещё плохим переводом).
Клоуны, блин. 🤡
Medium
About capture checking
in scala 3
😁5
#ml #video
youtube.com/watch?v=efPrtcLdcdM
Aka "Я обучил языковую модель на 4chan, сделал бот, который давал ответы с её помощью, и посмотрел, что произойдёт"
(thanks @DogeShibu)
youtube.com/watch?v=efPrtcLdcdM
Aka "Я обучил языковую модель на 4chan, сделал бот, который давал ответы с её помощью, и посмотрел, что произойдёт"
(thanks @DogeShibu)
YouTube
GPT-4chan: This is the worst AI ever
#gpt4chan #4chan #ai
GPT-4chan was trained on over 3 years of posts from 4chan's "politically incorrect" (/pol/) board.
(and no, this is not GPT-4)
EXTRA VIDEO HERE: https://www.youtube.com/watch?v=dQw4w9WgXcQ
Website (try the model here): https://gpt…
GPT-4chan was trained on over 3 years of posts from 4chan's "politically incorrect" (/pol/) board.
(and no, this is not GPT-4)
EXTRA VIDEO HERE: https://www.youtube.com/watch?v=dQw4w9WgXcQ
Website (try the model here): https://gpt…
🔥4👎2👍1