What's everyone working on this week (49/2017)?


Actually implementing a project in rust instead of just endless reading. First project, a mud. Fun to be had for all telnet console everywhere!


Implementing sorting algorithems in rust, such as selection, merge and bubble.


Now that LPC82x HAL is out, my activities on the embedded front have temporarily shifted to some non-Rust work (a condition that will be rectified soon). In the meantime, I’m working on some improvements on inotify/inotify-sys.


I wrote an initial version of my RPi3 Rust project, project Ada, conforming to this design back in August.

The plan to achieve loose coupling was to use constructor dependency injection. And I ran into the twin brick walls of dynamic dispatch (undesirable for project Ada) and limitations of object-safety (irreconcilable, AFAICT with a fluent API, which loves to return Self).

So I had to retool to figure out a way to do static dependency injection, which would bypass both issues.

I have a (primitive) solution; you can see a trivial, static dependency-injected “Hello, World” example here*.

This week (and possibly next), refactor project Ada to use this static dependency injection technique and maybe also add concurrency.

*If this static dependency injection technique works out, I plan to create a register_type_as_trait! macro to make construction of the container idiomatic (automatic and painless, possibly as a code_gen build script).


It would be nice if we can encourage people to post issues they need help with on their repos. Either in this thread or a new thread.


Are you thinking of something like the Call for Participation thread? You can post issues from your project there and every week, the latest additions to the thread are advertised on This Week In Rust.


Ah didn’t know we had a thread for it. Thanks


@dylan.dpc did you mean specifically for Community projects, or for independent projects?


Community projects. Just open source stuff not from a work perspective. Though even something related to work would be fine.


I’m trying to port my C library into rust.

The library provide a memory allocator where all the object allocated from it can be stored and loaded with zero cost.


I released 0.1.0-beta-2 of kairos some time ago. I hope I can release the final 0.1.0 at some point.

Kairos is a library on top of chrono to calculate times “plain text like”. Like today() + days(2) for example. It also features a parser for user-input, so one can build awesome commandline applications with it. For example a time-calculation utility.

For testing kairos, I’m playing with it in one of the commands in the imag project.


Any reason for choosing Mozilla licence?


Ah the good old days of MUDing.


Continuing to dump countless hours into writing and refactoring private research code that will probably never be seen or used by a single soul other than me, which computes a number of physical quantities that are ostensibly supposed to matter to me, all the while wondering what ever possessed me to switch from computer science to physics—as I have been for the last 3 or so years.


Started writing my own web framework. Again.


Trying to work on fleshing out more Rocket templates for “fedibook” (official name TBD)

Federated Social Media Network in Rust.


To learn, or because the current pantheon of Rust offerings are missing something you want?


Both. I don’t like any of them (including my failed attempts ;)).


haha–fair enough! I’m curious–what kinds of features are you looking for? (I’m not connected to any of the offerings out there–just curious).


The MPL is suitable for Rust libraries that want strong copy-left enforcement, much like the LGPL is suitable for binary libraries in other languages. Since libs/programs are generally compiled statically, the LGPL in a single apply would therefore have to apply to all libraries it compiles with. The MPL only covers specific files, so it can be safely used in Rust libraries and play nice with other ones. I actually use it for all of my library crates (applications are GPLv3+) because of it.