A curated index of Rust RFCs

Overview

RFC index

A curated index of Rust RFCs.

View the RFC index at ncameron.org/rfcs.

This project has three parts:

  • a website for browsing Rust RFCs,
  • metadata for that website,
  • a CLI app for editing the above metadata and generating the website.

Building and running

You'll need to get a GitHub personal access token and put it in a file called token.in in the root of this repo at compile time.

Build using the standard Cargo commands.

Commands:

USAGE:
    rfc-index <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    add         Add new metadata for an RFC
    delete      Delete the metadata of an RFC
    generate    Generate the RFC website
    get         Query the metadata of an RFC
    help        Prints this message or the help of the given subcommand(s)
    migrate     Migrate metadata between versions
    query       Query the metadata
    scan        Scan the RFC repo for metadata
    set         Update metadata for an RFC
    stats       Emit stats about the metadata
    tag         Set/update tags on metadata

Use generate to create the website.

Use add, delete, set, tag, and scan to edit metadata. You can also directly edit the JSON metadata in the metadata directory.

Contributing

Contributions are most welcome!

Contributing updates to the RFC metadata is very valuable. In particular, writing titles for RFCs, improving RFCs' tags and category (called a 'team' in the metadata and code), and adding newly merged RFCs is essential work for making this a high quality resource.

Improving the website itself is also very welcome, there are many ways we could improve the presentation and show more information, etc.

How it works

The CLI uses Git to clone the RFC repo to get the RFC text. It uses md-book's markdown rendering and Handlebars to generate a static website. We keep metadata for each RFC and use this to generate the index of RFCs. Initial data was taken from PRs to the RFCs repo using the Octocat GitHub API library.

The metadata we use for the index is:

Title

RFCs don't have a title, therefore we create a title for each RFC. Where there isn't a title yet, we use the RFC's filename (which is often unsatisfactory).

Team

This is a broad category and only roughly matches the actual Rust team responsible for an RFC. An RFC can belong to multiple teams. Some RFCs have no team ('unclassified' on the website), this should be fixed.

Many RFCs' team was taken from T- labels on the RFC PR, but teams can be changed to be more useful.

Tags

An RFC can have many tags. Tags are nested under teams using metadata in metadata/tags.json. Tags were mostly seeded from A- labels on RFC PRs, but again can be changed.

You might also like...
Easy protocol definitions in Rust

protocol Documentation Easy protocol definitions in Rust. This crate adds a custom derive that can be added to types, allowing structured data to be s

Actor framework for Rust.

Actix Actor framework for Rust Documentation User Guide API Documentation API Documentation (master branch) Features Async and sync actors Actor commu

Nanomsg library for Rust

Nanomsg Documentation Nanomsg is a modern messaging library that is the successor to ZeroMQ, written in C by Martin Sustrik and colleagues. The nanoms

NNTP client for Rust

rust-nntp NNTP Client for Rust Usage extern crate nntp; use nntp::{Article, NNTPStream}; fn main() { let mut nntp_stream = match NNTPStream::connec

POP3 client for Rust

rust-pop3 POP3 Client for Rust This client has SSL support. SSL is configured using an SSLContext that is passed into the connect method of a POP3Stre

Rust bindings for libssh2

ssh2-rs Documentation Rust bindings to libssh2, an ssh client library. Usage # Cargo.toml [dependencies] ssh2 = "0.9" Building on OSX 10.10+ This libr

A STOMP client in Rust. Compatible with RabbitMQ, ActiveMQ.

stomp-rs stomp-rs provides a full STOMP 1.2 client implementation for the Rust programming language. This allows programs written in Rust to interact

A µTP (Micro/uTorrent Transport Library) library implemented in Rust

rust-utp A Micro Transport Protocol library implemented in Rust. API documentation Overview The Micro Transport Protocol is a reliable transport proto

Rust zeromq bindings.

Rust ZeroMQ bindings. Documentation Release Notes About The zmq crate provides bindings for the libzmq library from the ZeroMQ project. The API expose

Comments
  • URL navigation

    URL navigation

    • .../rfcs should not redirect to .../rfcs/index.html
    • .../rfcs/team and .../rfcs/team/tag should open their respective sub-menus and show the RFC list; opening the sub-menu should update the URL
    • back and forwards should respect the above
    • rfcs/0000 should work (i.e., without the .html)
    opened by nrc 2
  • CLI: check subcommand

    CLI: check subcommand

    Do various coherency checks of the RFC metadata. Including: check for tags which only occur once or twice (possible typos), number and filename match, compare to scan data, data formatting is correct, missing title, team, or tags.

    opened by nrc 1
Owner
Nick Cameron
Rust at @microsoft. Formerly @rust-lang core team, @pingcap, @mozilla.
Nick Cameron
Multiplex server for rust-analyzer, allows multiple LSP clients (editor windows) to share a single rust-analyzer instance per cargo workspace

ra-multiplex   Multiplex server for rust-analyzer, allows multiple LSP clients (editor windows) to share a single rust-analyzer instance per cargo wor

max 95 Dec 29, 2022
DNS Server written in Rust for fun, see https://dev.to/xfbs/writing-a-dns-server-in-rust-1gpn

DNS Fun Ever wondered how you can write a DNS server in Rust? No? Well, too bad, I'm telling you anyways. But don't worry, this is going to be a fun o

Patrick Elsen 26 Jan 13, 2023
Rust crate for configurable parallel web crawling, designed to crawl for content

url-crawler A configurable parallel web crawler, designed to crawl a website for content. Changelog Docs.rs Example extern crate url_crawler; use std:

Pop!_OS 56 Aug 22, 2021
Rust crate for scraping URLs from HTML pages

url-scraper Rust crate for scraping URLs from HTML pages. Example extern crate url_scraper; use url_scraper::UrlScraper; fn main() { let director

Pop!_OS 35 Aug 18, 2022
FTP client for Rust

rust-ftp FTP client for Rust Documentation rust-ftp Installation Usage License Contribution Development environment Installation FTPS support is achie

Matt McCoy 155 Nov 12, 2022
The gRPC library for Rust built on C Core library and futures

gRPC-rs gRPC-rs is a Rust wrapper of gRPC Core. gRPC is a high performance, open source universal RPC framework that puts mobile and HTTP/2 first. Sta

TiKV Project 1.6k Jan 7, 2023
A library to work with CIDRs in rust

ipnetwork This is a library to work with IPv4 and IPv6 CIDRs in Rust Run Clippy by doing rustup component add clippy cargo clippy Installation This c

Abhishek Chanda 98 Dec 12, 2022
Network simulation in Rust

netsim - A Rust library for network simulation and testing (currently linux-only). netsim is a crate for simulating networks for the sake of testing n

Andrew Cann 115 Dec 15, 2022
Cross-platform, low level networking using the Rust programming language.

libpnet Linux ∪ OS X Build Status: Windows Build Status: Discussion and support: #libpnet on freenode / #rust-networking on irc.mozilla.org / #rust on

null 1.8k Jan 6, 2023
A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...

Tokio A runtime for writing reliable, asynchronous, and slim applications with the Rust programming language. It is: Fast: Tokio's zero-cost abstracti

Tokio 18.7k Dec 30, 2022