Skip to content

Instantly share code, notes, and snippets.

@colin-kiegel
colin-kiegel / gist:b35d278d6ed5251dfa85
Created December 1, 2015 14:11
regex replace multi-line + in multiple files
$FILES="*.rs"
$REGEX="s#(.*)\n(.*)/\2\n\1/"
find . -name "$FILES" | xargs perl -0777 -pi -e '$REGEX'
# flag: -0777 tells perl to read the file as a whole
# replace '-pi' with '-pi.bak' to create backups
#!/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
@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);
}
}
@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 / 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 / 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 / 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 / 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 / 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);
#![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;