Skip to content

Instantly share code, notes, and snippets.

horsin' around

Saoirse Shipwreckt withoutboats

horsin' around
Block or report user

Report or block withoutboats

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
Psuedocode from signal:
E = kB
A.y = E.y
A.s = 0
if E.s == 1:
a = -k (mod q)

Considerations for writing a loop over a Stream as it relates to await syntax.

JavaScript uses this syntax:

for await (elem of stream) {
   // ...

We add a built in attribute for handling pin projection:

struct MyCombinator<F> {
    field: F,

This generates a method fn field_pin(self: PinMut<'_, Self>) -> PinMut<'_, F>, and also generates these constraints:

withoutboats /
Created Jul 11, 2018
use cases for alternative registries

This is a list of potential use cases for something like alternative registries & some analysis of how to solve these use cases.

As context, a registry contains two network service components:

  1. The index: a git repository containing metadata about the packages in the registry
  2. The crate source: an HTTP server serving the actual package data

Private registry

I want to host my own crates separately from, to serve to people with appropriate access.


We don't need a need a new error trait if we just fix std::error::Error

Our great anguish around error handling is the incorrectness of the Error trait. Here's an easy way to solve the problem: fix the error trait. Literally: just change the existing trait so that it is correct.

Step 1: Remove description (DONE)

Description is already being deprecated, with a default method provided. Done and done.

Step 2: Add backtrace (TRIVIAL)

withoutboats /
Last active Jun 21, 2018
Async Methods II: object safety

Async Methods II: object safety

(Note: this is posted as a gist because my primary blog host is having some trouble today, and I can't get my blog to deploy. It will be on my blog eventually.)

[Last time][async-methods-i], we introduced the idea of async methods, and talked about how they would be implemented: as a kind of anonymous associated type on the trait that declares the method, which corresponds to a different, anonymous future type for each implementation of that method. Starting this



trait MyTrait {
    async fn foo(&self) -> i32;

impl MyTrait for MyType {
    async fn foo(&self) -> i32 {
       /* ... * /
withoutboats /
Created Mar 29, 2018
net wg presentation slide data

Network services WG

Network services WG

  1. Async IO
  2. Library support for network services

withoutboats /
Last active Mar 16, 2018
Constraint Kinds in Rust

Notes on adding Constraint Kinds to Rust

Background: Constraint Kinds

a trait can be thought of as a type operator generating a "constraint" - what in Rust would usually be called a bound. For example:

// Declares a new item `Foo` with kind `type -> constraint`
trait Foo { }
#[macro_use] extern crate cargonauts;
use cargonauts::futures::{Future, future};
use cargonauts::resources::{Resource, Environment, Error};
use cargonauts::methods::Get;
use cargonauts::formats::Debug;
routes! {
resource Echo {
method Get in Debug;
You can’t perform that action at this time.