Open2

Rust勉強手記ーOption Enum

convers39convers39

OptionEnum型の一つで、Rustlangの中でnullという概念を表している。Rustにはnullというデータタイプがなく、Option Enumの形で扱うことになる。直接のnull扱いを避けて、コードの安全性を高められる。

enum Option<T> {
    None,
    Some(T),
}

この定義を見た瞬間、なんか見覚えあるな。。と思ったら、FPのMaybe functorとかなり機能的に似ているのでは?

class Functor {
  constructor(val) { 
    this.val = val; 
  }

  map(f) {
    return new Functor(f(this.val));
  }
  // of aka unit functor, replace new keyword to create a new instance of Functor
  static of(val) {
    return new Functor(val);
  };
}

class Maybe extends Functor {
  map(f) {
    return this.val ? Maybe.of(f(this.val)) : Maybe.of(null);
  }
}

という線で探してみると、こちらの記事を見つけた。

matchとの併用によって、必ずNullのパターンが処理されるので、非常にrobustなコードに書かせられる。

新しい知識獲得と、既存の知識とのリンク付けの二重の嬉しさの一時でした。