Skip to content

Instantly share code, notes, and snippets.

@colin-kiegel
colin-kiegel / generic_assertions.rs
Last active March 22, 2017 23:33
thoughts about assert_cli ... :-)
/// Warning: Pseudo-Rust Code
/// Some rough ideas how `assert_cli` could accept arbitrary assertions and possibly
/// support interactive commands.
///
/// The current simple API could be implemented on top of this more general one.
Cmd::run("")
.with_timeout(Duration(...))
.assert(StdOut::ends_with("Are you sure?")) // ::starts_with, ::eq, ::ne, ::contains
#![feature(prelude_import)]
#![no_std]
#![no_std]
#![feature(collections)]
#![allow(dead_code)]
#[prelude_import]
use core::prelude::v1::*;
#[macro_use]
extern crate core as core;
@colin-kiegel
colin-kiegel / rust_macros_1.1.html
Created February 1, 2017 22:53
Rust Cologne Meetup 2017-02-01 - macros 1.1
<!DOCTYPE html>
<html>
<head>
<title>macros 1.1</title>
<meta charset="utf-8">
<style>
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
@colin-kiegel
colin-kiegel / atom-rust-packages
Created October 2, 2016 11:12
Atom-Rust IDE
# Run this in your shell to install a set of atom-plugins
# for working with rust projects and git
# Rust essentials
apm install language-rust racer linter linter-rust build build-cargo cargo-test-runner rust-api-docs-helper
# Other
apm install keyboard-localization autoupdate-packages project-manager atom-terminal minimap docblockr theme-switcher
# Git
@colin-kiegel
colin-kiegel / bar.rs
Created August 13, 2016 16:48
#3: Should builder methods use `mut self` or `&mut self`?
#![crate_type = "lib"]
#![crate_name = "bar"]
extern crate foo;
use foo::Channel;
pub fn a<VALUE: Into<i32>>(mut builder: Channel, value: VALUE) -> Channel {
builder.a(value.into()).clone()
}
pub fn b<VALUE: Into<i32>>(mut builder: Channel, value: VALUE) -> Channel {
@colin-kiegel
colin-kiegel / test_dependencies.sh
Created August 9, 2016 19:52
cargo test -- with arrays of multiple dependency versions
#!/bin/bash
# This script will loop over arrays of dev-dependencies
#
# - loops can be nested (not nice but efficient)
# - http://doc.crates.io/specifying-dependencies.html
CUSTOM_DERIVE_VERSIONS=(
"=0.1.0"
"0.1"
@colin-kiegel
colin-kiegel / main.rs
Last active August 13, 2016 17:04
#2: Should builder methods use `mut self` or `&mut self`?
mod builder {
#[derive(Default, Clone)]
pub struct Channel {
a: i32,
b: i32,
c: i32,
}
impl Channel {
pub fn a<VALUE: Into<i32>>(&mut self, value: VALUE) -> &mut Self {
@colin-kiegel
colin-kiegel / main.rs
Last active August 8, 2016 20:26
Should builder methods use `mut self` or `&mut self`?
#[derive(Debug, Default)]
struct Channel {
special_info: i32
}
impl Channel {
fn special_info<VALUE: Into<i32>>(mut self, value: VALUE) -> Self {
self.special_info = value.into();
self
}
@colin-kiegel
colin-kiegel / lib.rs
Last active August 6, 2016 18:47
rust macro equivalent for `if ($x == $y) { branch!() }`
macro_rules! match_and_then {
{ $val:tt .. {$( $default_action:tt )*}; $( {$( $pattern:tt )+} => {$( $action:tt )*} ;)*} => {
macro_rules! __callback_match_and_then {
$( {$( $pattern )+} => {$( $action )*}; )*
{ $any:tt } => {$( $default_action )*};
}
__callback_match_and_then!($val);
}
}
#!/bin/sh
### BEGIN INIT INFO
# Provides: TeamCity_BuildAgent
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start build agent daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO