Inspiration
Inspired by the Reddit terminal client and hearing about Rust's FEARLESS CONCURRENCY, we decided to set out to recreating the Discord client for the terminal completely in Rust.
What it does
It's a well-featured Discord client that exists entirely within your terminal app. View text messages from all your servers and channels and send them too.
How we built it
Completely in Rust, using a couple of libraries for Discord API calls, concurrency abstractions, and terminal UI.
Git.
Challenges we ran into
Rust is very strict about data ownership and concurrency and we often were left scratching our heads at what the latest compiler error message was. However, every time we were able to compile it usually meant that we had working code, because of all of the static guarantees that Rust provides.
Also, sometimes we ran into the occasional race condition or deadlock, which left us scratching our heads for longer before sorting that out.
Accomplishments that we're proud of
Building out all of these features with a complex data structure and working with a lot of concurrency in such a limited time frame.
What we learned
Rust is heaven when you can understand what the error messages mean, but it can be quite daunting when you don't. We also learned a whole ton about thread-based concurrency, data ownership and borrowing, and overall a completely different way to program.
What's next for Discord for the Terminal
Fancy stuff like role colours, message history, list of people online, maybe voice.
Built With
- discord
- rust
- tui-rs
Log in or sign up for Devpost to join the conversation.