gmi
gmi (pronounced as "Jee Mee" or however you'd like) is a simple to use, lightweight Rust library for interfacing with the Gemini protocol as a client. It was created out of frustration with exsisting libraries bringing in multiple other dependencies that I personally saw as unnecessary. It is NOT meant to be used as a library to run as a server.
This library is split into three main parts:
gemtext: A Gemtext parserprotocol: A collection of the various data structures that are used by the gemini protocol.request: A module for actually making requests to gemini servers. This can be disabled by disabling the feature flagnet.url: A simple implementation of a subset of the URL RFC implementing only what is needed by Gemini.
Focuses
- Lightweight
- Small external dependencies
- Simple interface
Features:
- Gemini TLS support
- Gemini Response parsing
- Gemtext parsing
- Client certificates
- Trust On First Use (TOFU)
- Mercury support
Simple Example:
use Url;
use request;
Alternatives
gemini is a bit of a heavier, but more feature complete library for interfacing with the Gemini protocol. It can be used for both a server and a client, unlike gmi which can only be used as a client (for now (; )