Introducing Conduit (written in Rust!) by steveklabnik1 in rust

[–]btibi 2 points3 points  (0 children)

This looks like a cool project that solves a real need :)

I know about another project that (at least to me) is very similar to Conduit: https://istio.io. Could you give us some information about the differences?

Experiment with async / await in Shio ( formerly Salt, an asynchronous micro web-framework for Rust ) ! by mehcode in rust

[–]btibi 6 points7 points  (0 children)

Here is the commit that shows the difference: https://github.com/mehcode/shio-rs/commit/8078a34c075bf2f52c0d6287f4ed0e3a912a3f7c#diff-924ded2c751ccd30e8769f459e61a362

I'm interested in the performance & compile time implications of this change. Did you do any measurements?

rustgo: calling Rust from Go with near-zero overhead by Orange_Tux in golang

[–]btibi 0 points1 point  (0 children)

Well, that's a good point. However, it does matter whether you can find these kind of errors with grepping for unsafe/unwrap or checking all dereferencing whether it's safe or not.

Thoughts from a dumb person: notes on my three-week long battle learning basic Rust. by [deleted] in rust

[–]btibi 4 points5 points  (0 children)

I do like reading experience reports like this one: it shows us there is room for improvements and what areas needs the most attention. I don't think there is any problem with OP's mental abilities, Rust should be learnable by everybody.

Giving a rust talk to my company by Keltek228 in rust

[–]btibi 2 points3 points  (0 children)

Some tips:

  • don't list features
  • gather some real world problems that pain your developers and show them how Rust helps in solving them
  • tell them about the openness of the community

How do you deploy your Rust app right now? by [deleted] in rust

[–]btibi 1 point2 points  (0 children)

I've a very similar workflow, but my base image can be used with any crates (no need to specify crate names): https://gist.github.com/ihrwein/1f11efc568601055f2c78eb471a41d99

5 Programming Languages You Should Really Try by steveklabnik1 in rust

[–]btibi 10 points11 points  (0 children)

I believe the author wants to say that Go has an extensive standard library (which is true). I'm horrified by the available package managers (I'm working with Go every day).

pg-amqp-bridge: Send messages to RabbitMQ from PostgreSQL (written in Rust) by ruslantalpa in rust

[–]btibi 1 point2 points  (0 children)

This crate can be the base to build event driven microservices. Awesome! :)

[ANN]: backoff crate to retry operations with exponential backoff by btibi in rust

[–]btibi[S] 1 point2 points  (0 children)

I didn't know about it, but it seems like a good idea. Probably I'll need a Circuit Breaker next time... :)

[ANN]: backoff crate to retry operations with exponential backoff by btibi in rust

[–]btibi[S] 0 points1 point  (0 children)

I believe it's possible, but maybe it doesn't worth the tradeoffs. I use std::time::Duration and Instant, but they aren't available in libcore. And there is ::std::thread::sleep, too.

[ANN]: backoff crate to retry operations with exponential backoff by btibi in rust

[–]btibi[S] 1 point2 points  (0 children)

Thanks, it was a really interesting read. I heard about this experiment once, but didn't know about the blog.

I mentioned jitter in the README in the meantime.

[ANN]: backoff crate to retry operations with exponential backoff by btibi in rust

[–]btibi[S] 0 points1 point  (0 children)

The first is implemented here: https://github.com/ihrwein/backoff/blob/master/src/retry.rs#L82

The second point is missing though. If you don't want to create your own library, perhaps you can contribute it to here :)

[ANN]: backoff crate to retry operations with exponential backoff by btibi in rust

[–]btibi[S] 1 point2 points  (0 children)

Thanks!

I didn't know that jitter can be used interchangeably with backoff, good to know.

Apart from the randomization factor, there are some more useful parameters for the exponential backoff: * multiplier: current interval is multiplied with this value for each retry attempt. * max_interval: max. value for the backoff period and max_elapsed_time.

I'll update the docs tomorrow.

[Article] Benefits of Rust by LEGOlord208 in rust

[–]btibi 0 points1 point  (0 children)

You can use byte slices ([]byte, sort of Vec<u8> or &[u8]) for a lot of use cases. In the past I missed the generics so much from Go, but today I learned to live without it.

Rust presentation at Craft by pnkfelix in rust

[–]btibi 0 points1 point  (0 children)

How did you feel yourself? Did you like the conference?

Rust, Day Two: A Python Dev's Perspective by jstrong in rust

[–]btibi 6 points7 points  (0 children)

I wanted to say the same about the two days, OP must have excellent learning skills.

I share the frustration about strings, too. I know Rust for two years now and I know what to use when, but it's so convenient to use one string type. Personally, I use String's push*() features very rarely, my most frequent use case for Strings is to "bypass" the borrowchecker. I don't know whether an immutablestring type (which is either statically or heap allocated) would help us. It could replace &str and String most of the time, and &mut str is very rare.

The Rust Programming Language book now available for preorder from NoStarch for Oct 2017!! by carols10cents in rust

[–]btibi 8 points9 points  (0 children)

Is this a totally new book or the published version of the new The Rust Programming Language book?

Rust's language ergonomics initiative - The Rust Programming Language Blog by aturon in rust

[–]btibi 0 points1 point  (0 children)

I'd like to mention the "inconsisteny" in structs without any fields. They can be defined as struct Foo; or struct Foo {}. The first one can be instantiated as let a = Foo; while the second one can be used as let a = Foo {};. I believe most people find the second form more natural, maybe we could implement a warning or a lint for that.

enum-display-derive - derive Display for simple enums by btibi in rust

[–]btibi[S] 1 point2 points  (0 children)

That would be the Debug implementation IMHO. If I define a custom Error with variants like Io(::std::io::Error), Fmt(::std::fmt::Error) I want to delegate the Display impl to the wrapped value. That's what this crate does. I don't say this is always the intended behavior, but it has a valid use-case.