Skip to content

Instantly share code, notes, and snippets.

//! An alternative to a traditional `Future::and_then` combinator.
#[macro_use]
extern crate futures;
#[macro_use]
extern crate state_machine_future;
use futures::{Async, Future, IntoFuture, Poll};
use state_machine_future::RentToOwn;
@mexus
mexus / and_then2.rs
Last active July 29, 2018 00:32
Alternative `and_then` combinator
//! An alternative to a traditional `Future::and_then` combinator.
extern crate futures;
use futures::{Async, Future, IntoFuture, Poll};
use std::mem;
pub enum AndThen2<Original, Resulting, F> {
First(F, Original),
Second(Resulting),
extern crate futures;
extern crate reql;
extern crate reql_types;
extern crate tokio;
extern crate tokio_core;
#[macro_use]
extern crate serde_json;
extern crate tokio_tungstenite;
extern crate url;
// extern crate futures_retry;
let client = || {
connect_async(Url::parse(url).unwrap(), handle.remote().clone())
// .retry(|_| RetryPolicy::Repeat)
.map_err(|e| eprintln!("connect_async: {}", e))
.and_then(|(ws_stream, _)| {
println!("Connected to {}", url);
let (sink, stream) = ws_stream.split();
sink.send(Message::Text(subscribe.to_string()))
.map_err(|e| eprintln!("sink send: {}", e))
@mexus
mexus / main.rs
Last active October 18, 2018 17:41
An alternative VM implementation for https://habr.com/post/416505/
// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
// Version 2, December 2004
//
// Copyright (C) 2018 mexus <gilaldpellaeon at gmail dot com>
//
// Everyone is permitted to copy and distribute verbatim or modified
// copies of this license document, and changing it is allowed as long
// as the name is changed.
//
// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
extern crate bincode;
extern crate rand;
extern crate serde;
#[macro_use]
extern crate serde_derive;
use rand::distributions::{Alphanumeric, Uniform};
use rand::prelude::*;
use std::fs::File;
use std::iter;
@mexus
mexus / matrix.cpp
Created May 29, 2018 19:49
Some stuff with a matrix
#include <algorithm>
#include <array>
#include <iostream>
template <class T, size_t Columns, size_t Rows>
using Matrix = std::array<std::array<T, Columns>, Rows>;
template <class T, size_t Columns, size_t Rows>
static void print_matrix(const Matrix<T, Columns, Rows> &matrix) {
for (size_t i = 0; i != Rows; ++i) {
extern crate result;
use std::fmt::Debug;
use std::io::{ErrorKind, Result};
use std::path::Path;
use result::prelude::*;
fn check_path<P: AsRef<Path> + Debug>(path: P) -> Result<Option<P>> {
println!("Processing path {:?}", path);
@mexus
mexus / pasta.md
Created April 17, 2018 21:18
Пацаны, не надо входить в IT

Пацаны, не надо входить в IT! На форуме Labor Union писали:

Знаком с достаточно большим количеством программистов и онлайн, и оффлайн, и лично, и "через одно рукопожатие", и не знаю среди них ни одного человека, который жил бы богато. Ни одного! Работодатели и управленцы все уши нам прожужжали тем, что на рынке труда каждый год наблюдается огромный дефицит программистов. Но тогда хочется спросить: если на рынке есть такой жуткий дефицит, то где в Петербурге, Новосибирске, Екатеринбурге и Нижнием Новгороде программисты-долларовые мультимиллионеры? Где личные бизнес-джеты у программистов? Может, любители месить Spring Framework покупают себе частные острова? Нет. И дефицита программистов на рынке нет. Зато есть дефицит тех людей, которые готовы заказать IT-проект и потратить на него хотя бы $750 000. Если бы на рынке был такой жуткий дефицит программистов, то уже работающие программисты могли бы подойти к работодателям и потребовать удвоить их зарплаты, и работодатели были бы вынуждены это сделать. Но этого не

#[macro_use]
extern crate failure;
use failure::Error;
#[derive(Fail, Debug)]
enum MyEnumError {
#[fail(display = "An error occurred.")]
Variant1,
#[fail(display = "A different error occurred.")]