Skip to content

Instantly share code, notes, and snippets.

@afilini
afilini / main.rs
Created January 29, 2020 16:40
Generic amount types in Rust
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; )*
@afilini
afilini / main.rs
Created January 30, 2020 13:11
Runtime templates
#[derive(Debug)]
struct A {
val: u32,
}
#[derive(Debug)]
struct B {
val: String,
}
@afilini
afilini / taproot.rs
Last active April 4, 2024 08:27
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 / LICENSE
Created August 8, 2023 10:00
Rust cortex-m-log using semihosting console (SYS_WRITEC)
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 / shell.nix
Created January 18, 2024 22:04
Repackaging of "widevine-installer" from AsahiLinux for NixOS
let
pkgs = import <nixpkgs> {};
lacrosVersion = "120.0.6098.0";
widevine-installer = pkgs.stdenv.mkDerivation rec {
name = "widevine-installer";
version = "7a3928fe1342fb07d96f61c2b094e3287588958b";
src = pkgs.fetchFromGitHub {
owner = "AsahiLinux";
repo = "${name}";
rev = "${version}";