Skip to content

Instantly share code, notes, and snippets.

@afilini
afilini / LICENSE
Created August 8, 2023 10:00
Rust cortex-m-log using semihosting console (SYS_WRITEC)
View LICENSE
MIT License
Copyright (c) 2023 Alekos Filini
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
@afilini
afilini / taproot.rs
Last active May 21, 2022 18:44
taproot.rs
View taproot.rs
// Bitcoin Dev Kit
// Written in 2021 by Alekos Filini <alekos.filini@gmail.com>
//
// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
//
// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// You may not use this file except in accordance with one or both of these
// licenses.
@afilini
afilini / main.rs
Created January 30, 2020 13:11
Runtime templates
View main.rs
#[derive(Debug)]
struct A {
val: u32,
}
#[derive(Debug)]
struct B {
val: String,
}
@afilini
afilini / main.rs
Created January 29, 2020 16:40
Generic amount types in Rust
View main.rs
use std::collections::BTreeMap;
#[derive(Debug)]
struct LiquidAmount(BTreeMap<String, u64>);
type BitcoinAmount = u64;
macro_rules! liquid_amount {
( $( $key:expr => $val:expr ),* ) => {{
let mut map = BTreeMap::new();
$( *map.entry($key.into()).or_insert(0) += $val; )*