Coder Social home page Coder Social logo

rust-chat's Introduction

Rust-chat

I wrote this small chat-like pair of server/client in order to learn Rust (borrow-checker, lifelines, threads, generics). Rust is kinda hard at first glance (lots of syntax) but its approach in tooling and language is extremely interesting.

licecap_recording

screencast asciinema

๐Ÿ˜Ž Pros:

  • No GC but memory-safe
  • some good FP constructs (maps for example), nice
  • type-oriented language, no bloated classes or objets
  • polymorphism and generics implemented in a nice way (impl trait) where you can add traits to a foreign type (traits are like interfaces)
  • pretty good type inference but still needs lots of annotations (function params and some generic functions). But I know that inference is hard when using polymorphism

๐Ÿ˜ž Cons:

  • language and tooling is evolving at a fast pace; although transitionning between patch/minor version is often painless, maintaing a Rocket (for example) project is a pain as it uses the nightly channel, which in turn often lacks some tooling randomly (rls mainly)
  • The tooling, primarely rls (Rust Language Server), is young and somehow the types-on-hover doesn't work great (compared to OCaml, ReasonML or even Typescript). Because of the trait stuff, the RLS often doesn't give which methods can be called or stuff like that.
  • Compiler a bit slow compared to Go or OCaml but faster than template-based C++

To test this small POC:

cargo run -- server 9000
cargo run -- client 127.0.0.1 9000
cargo run -- client 127.0.0.1 9000

rust-chat's People

Contributors

maelvls avatar

Stargazers

Venelin avatar  avatar Alex Ming avatar  avatar Amin D. avatar Milk avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

rust-chat's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.