Re: Optional 0.15.0 now compatible with vibe-d, @safe, @nogc, betterC.

2019-06-04 Thread Marco de Wild via Digitalmars-d-announce

On Tuesday, 4 June 2019 at 07:22:34 UTC, aliak wrote:

Hey,

I've recently released optional 0.15.0 [0] that includes 
support for vibe-d serialization/deserialization. So you can 
use it instead of Nullable for types that may or may not be 
there (I got bit by Nullable again so felt this had to be added 
[1])


Thanks! I've recently ran into the vibe-d serialization as well. 
It's awesome to be able to use Optional there.


Optional 0.15.0 now compatible with vibe-d, @safe, @nogc, betterC.

2019-06-04 Thread aliak via Digitalmars-d-announce

Hey,

I've recently released optional 0.15.0 [0] that includes support 
for vibe-d serialization/deserialization. So you can use it 
instead of Nullable for types that may or may not be there (I got 
bit by Nullable again so felt this had to be added [1])


Also of note is that it can be used in nogc and safe code, and is 
compatible with betterC.


Extract from readme:

* Use pattern matching, orElse
  fun.match!(
(int value) => writeln("it returns an int"),
() => writeln("did not return anything"),
  );
  fun.orElse(3); // returns some(fun()) or some(3)

* Safely call functions on classes that are null or structs that 
don't exist

  class C { int fun() { return 3; } }
  Optional!C a = null;
  a.dispatch.fun; // no crash, returns no!int

* Forwards any operator calls to the wrapped typed only if it 
exists, else just returns a none

  Optional!int a = 3;
  Optional!int b = none;
  a + a; // evaluates to some(6);
  a + b; // evaluates to no!int;

* Compatible with std.algorithm and std.range
  fun.each!(value => writeln("I got the value"));
  fun.filter!"a % 2 == 0".each!(value => writeln("got even 
value"));


Cheers,
- Ali

[0] https://code.dlang.org/packages/optional
[1] 
https://forum.dlang.org/thread/thtjhrvlgetaahcam...@forum.dlang.org