On Fri, Dec 23, 2016 at 12:07:28PM +0200, smaug wrote:
> On 12/20/2016 03:46 PM, Jan de Mooij wrote:
> > Hi all,
> > 
> > A few weeks ago we added mozilla::Result<V, E> to MFBT [0][1]. I was asked
> > to inform dev-platform about this, so here's a quick overview.
> > mozilla::Result<V, E> is based on Rust's Result type [2]. It contains
> > either a success value of type V or an error value of type E. For example,
> > a function Foo that returns an `int` on success or some `Error` (enum,
> > pointer, etc) on failure, would have this signature:
> > 
> >    Result<int, Error> Foo();
> > 
> > mozilla::Ok is an empty struct that can be used when a function doesn't
> > return anything on success:
> > 
> >    Result<Ok, Error> Bar() { ... return Ok(); }
> > 
> > The MOZ_TRY(expr) macro is similar to Rust's try! macro: if `expr` is an
> > error it propagates it to the caller, else it continues:
> > 
> >    Result<V, E> Baz() { MOZ_TRY(Bar()); ... }
> > 
> > There's also a MOZ_TRY_VAR macro that can be used when you want to store
> > the return value on success. Result has isOk(), isErr(), unwrapOk(),
> > unwrapErr() methods that do what you'd expect. It also has the
> > MOZ_MUST_USE_TYPE annotation, so the static analysis builds will complain
> > if you ignore the return value of a function that returns Result.
> > 
> Why is the API not using Mozilla coding style with method naming?
> "In C/C++, method names should be capitalized and use CamelCase."
> Though, looks like MFBT is odd beast in coding style.
> Waiting for tools to just format everything to use same style.

The question is asked very often, and the answer is MFBT was forked off
spidermonkey code, and spidermonkey has its own coding style.

Yes, it's a mess.

Mike
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to