Rust-like Optional-type for PHP 7
$some = some(42);
$this->assertTrue($some->isSome());
$this->assertEquals(42, $some->unwrap());$some = some(42);
$this->assertTrue($some->isSome($value));
$this->assertFalse($some->isNone());
$this->assertEquals(42, $value);$none = none();
$this->assertTrue($none->isNone());
$this->assertFalse($none->isSome());$none = none();
$this->assertTrue($none->isNone());
$this->assertFalse($none->isSome($value));
$this->assertNull($value);$maybe = maybe(null);
$this->assertTrue($maybe->isNone());
$maybe = maybe(42);
$this->assertTrue($maybe->isSome());
$this->assertEquals(42, $maybe->unwrap());$result = some(0)->ensure(function($value) {
return $value > 0;
});
$this->assertTrue($result->isNone());