Блог*
Ir al canal en Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
Mostrar más1 949
Suscriptores
+124 horas
+237 días
+2430 días
Archivo de publicaciones
1 949
А в программу RustCon проходит ... Вафель!
Вот что он сам пишет про свою тему "Неочевидные прелести Rust":
В Rust много неочевидных, но очень приятных фич, особенностей, функций. Я спросил у людей, что их приятно удивило при изучении раста и собрал все ответы в один список.
Теперь я хочу рассказать об этих прелестях, чтобы как можно больше разработчиков о них знали и могли ими пользоваться :)
Несколько примеров пунктов из списка:
👉 Result: FromIterator (.collect:<Result<_, _>>())
👉 Возможность использования паттернов везде (например в аргументах функций, let)
👉 Создание массивов через [CONST; N] для T: !Copy
Тезисы других докладов смотрите на сайте
Билеты там же😉
1 949
никто:
абсолютно никто:
Илья: порталы порталы порталы порталы
(и мы его за это и не только любим, это добрый мем)
1 949
В США FAANG, а в России ВСРАТОСЛАВ:
ВК + Сбербанк + Рамблер + Акронис + Тиньков + Озон + Суперджоб + Ланит + Авито + ВТБ
1 949
Кстати, в #rust стабилизировали паники в const-контекстах! 🎉 Будем ждать, когда докатится до стейбла.
UPD:
unreachable_unchecked тоже.1 949
Юные японцы не знают, что такое «дискета». Юные россияне тоже, наверное, не в курсе, но в завирусившемся твите интересно другое - что люди видят вместо дискеты.
Образ автомата с напитками накрепко вшит в голову каждого японца - хоть молодого, хоть пожилого. Туристы, побывавшие в стране, тоже понимают, о чем речь и не могут теперь развидеть на иконке автомат. Он настоящий символ страны, не хуже сакуры или суши.
1 949
#prog #rust #article
Статья про фреймворк для тестирования программ на Rust при помощи генерации случайных программ и их исполнения при помощи miri. За счёт применяемых методик позволяет генерировать программы, которые тайпчекаются по построению. Несмотря на пачку ограничений, авторы сумели найти несколько багов в существующих библиотеках.
"The goal of this paper is to develop a methodology for automatically generating Rust programs to effectively test Rust library APIs. The main challenge is to synthesize well-typed Rust programs to account for proper chaining of API calls and Rust’s ownership type system and polymorphic types. We develop a program synthesis technique for Rust library API testing, which relies on a novel logical encoding of typing constraints from Rust’s ownership type system. We implement SyRust, a testing framework for Rust libraries that automatically synthesizes semantically valid test cases. Our experiments on 30 popular open-source Rust libraries found 4 new bugs."
1 949
#prog #rust
fmt_ext — библиотека для прикрепления кастомных реализаций
Debug и Display к чужим типам.
Вместо тысячи слов:
use std::{fmt, marker::PhantomData};
use fmt_ext::{debug::*, DebugExt};
// Create a type that will implement custom debug...
struct SliceWithLenDebug<T>(PhantomData<T>);
// Implement custom debug...
impl<T> CustomDebug for SliceWithLenDebug<T>
where
T: fmt::Debug,
{
type Target = [T];
fn fmt_target(target: &Self::Target, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Slice {{ len: {}, items: {:?} }}", target.len(), target)
}
}
// Attach custom debug implementation to the target type...
impl<T> AttachDebug<SliceWithLenDebug<T>> for [T] {}
// Look! Now we have just call `debug` method on the target type...
fn main() {
let numbers = [0, 1, 2, 3];
println!("{:?}", numbers.debug());
let strings = vec!["I", "am", "a", "custom", "debug"];
println!("{:?}", strings.debug());
}
(thanks @ilyavenner)