Блог*
Делать ли отдельный хештег под неочевидные способы потерять производительность?
Сделал, performancetrap
🔥5🤨3🤯1🤮1
#prog #rust #rustlib
smart-default
Custom derive for automatically implementing the Default trait with customized default values:
smart-default
Custom derive for automatically implementing the Default trait with customized default values:
#[macro_use]
extern crate smart_default;
#[derive(SmartDefault)]
enum Foo {
Bar,
#[default]
Baz {
#[default = 12]
a: i32,
b: i32,
#[default(Some(Default::default()))]
c: Option<i32>,
#[default(_code = "vec![1, 2, 3]")]
d: Vec<u32>,
#[default = "four"]
e: String,
},
Qux(i32),
}
assert_eq!(
Foo::default(),
Foo::Baz {
a: 12,
b: 0,
c: Some(0),
d: vec![1, 2, 3],
e: "four".to_owned(),
},
);
👍9🤔3👎2🥴2😁1
Forwarded from Питонические атаки
Оказывается, механизм разрешения зависимостей из Poetry можно использовать для решения судоку. И судоку, и разрешение зависимостей — это задачи удовлетворения ограничений (constraint satisfaction problem), поэтому достаточно лишь записать правила судоку в виде пакетов с зависимостями и заставить Poetry это установить. А если добавить флажки для подробного вывода, то Poetry еще по пути будет объяснять, почему он решает судоку именно так. Офигенно!
Статья | Тред на реддите
Статья | Тред на реддите
🔥17👍2❤1👎1
#prog #parsing #rust #rustlib
Chumsky
A parser library for humans with powerful error recovery.
Пример парсера brainfuck:
Chumsky
A parser library for humans with powerful error recovery.
Пример парсера brainfuck:
use chumsky::prelude::*;
#[derive(Clone)]
enum Instr {
Left, Right,
Incr, Decr,
Read, Write,
Loop(Vec<Self>),
}
fn parser() -> impl Parser<char, Vec<Instr>, Error = Simple<char>> {
recursive(|bf| {
choice((
just('<').to(Instr::Left),
just('>').to(Instr::Right),
just('+').to(Instr::Incr),
just('-').to(Instr::Decr),
just(',').to(Instr::Read),
just('.').to(Instr::Write),
bf.delimited_by(just('['), just(']')).map(Instr::Loop),
))
.repeated()
})
}
GitHub
GitHub - zesterer/chumsky: Write expressive, high-performance parsers with ease.
Write expressive, high-performance parsers with ease. - zesterer/chumsky
🔥12
Блог*
#prog #parsing #rust #rustlib Chumsky A parser library for humans with powerful error recovery. Пример парсера brainfuck: use chumsky::prelude::*; #[derive(Clone)] enum Instr { Left, Right, Incr, Decr, Read, Write, Loop(Vec<Self>), } …
Пример сообщения о синтаксической ошибке для разрабатываемого этим же человеком своего языка программирования.
🤯30