Forwarded from шиза
судьба, проказница — шалунья, определила так сама: всем глупым — счастье от безумья, всем умным — горе от ума
Forwarded from Блог*
#prog #rust #itsec
blog.rust-lang.org/2022/01/20/cve-2022-21658.html
> Rust 1.0.0 through Rust 1.58.0 is affected by this vulnerability.
Oof
blog.rust-lang.org/2022/01/20/cve-2022-21658.html
> Rust 1.0.0 through Rust 1.58.0 is affected by this vulnerability.
Oof
он шагнул из окна, как шагала она,
он взлетел, как взлетала она
но не вверх, а вниз
он взлетел, как взлетала она
но не вверх, а вниз
Life of Tau
что ж... это работает
в чате по питону обсуждали такую задачу:
нужно написать функцию add, которая ведёт себя так:
тут используется None, хотя следовало бы создать свой sentinel или смотреть количество аргументов - вдруг кому-то придёт в голову сложить что-то с None
а потом я решила написать это на расте... встречайте:
#prog #rust #python
нужно написать функцию add, которая ведёт себя так:
>>> add(1)(2)(3)()
6
>>> add(1)(2)(3)(4)()
10
ну в принципе ничего сложного:def add(succ = None):
acc = getattr(add, "_acc", 0)
if succ is None:
if hasattr(add, "_acc"):
del add._acc
return acc
add._acc = acc + succ
return addтут используется None, хотя следовало бы создать свой sentinel или смотреть количество аргументов - вдруг кому-то придёт в голову сложить что-то с None
а потом я решила написать это на расте... встречайте:
#![feature(fn_traits, unboxed_closures)]
use std::ops::Add;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub struct Adder<T> {
acc: T,
}
impl<L, R, O> FnOnce<(R,)> for Adder<L>
where
L: Add<R, Output = O>,
{
type Output = Adder<O>;
extern "rust-call" fn call_once(self, (succ,): (R,)) -> Self::Output {
Adder {
acc: self.acc + succ,
}
}
}
impl<A> FnOnce<()> for Adder<A> {
type Output = A;
extern "rust-call" fn call_once(self, (): ()) -> Self::Output {
self.acc
}
}
#[allow(non_camel_case_types)]
pub struct add;
impl<A> FnOnce<(A,)> for add {
type Output = Adder<A>;
extern "rust-call" fn call_once(self, (acc,): (A,)) -> Self::Output {
Adder { acc }
}
}
fn main() {
println!("{}", add(1)(2)(3)());
}
единственное, что не получилось сделать - разрешить делать сразу add()#prog #rust #python
play.rust-lang.org
Rust Playground
A browser interface to the Rust compiler to experiment with the language
👍3
в смысле уже скомпилировалось
у меня пет-проект дольше компилировался, чем сейчас cpython
у меня пет-проект дольше компилировался, чем сейчас cpython
Life of Tau
каминг-аут как признание в любви дальше либо эйфория либо депрессия
ну и да, перед этим тысячу раз подумаешь
но стоит начать - и дальше будет легко
но стоит начать - и дальше будет легко
Forwarded from шиза
я бесконечно верю в доброту, порядочность и искренность.
и каждый раз убеждаюсь: такой дуры, как я, больше нет.
и каждый раз убеждаюсь: такой дуры, как я, больше нет.