低レイヤを知りたい人のための Cコンパイラを Rust で作っている
↑の続きというわけで Rust 版を作っている
Rust 化して気づいたのは Vec
また、Node について binary operator を考えると当然 Node<Node, Node> のようなものにならざるを得ないのだが1、この場合に Node が再帰的に定義されてしまうため、sizeof(Node)
が一意に定まらないという問題があることがわかった。この場合に Rust 的には Box
あー、Aに必要なメモリを確保しようとしたときに、再帰的にAをもってると何バイト必要なのかが定まらなくて困るのか。そこでヒープに確保してそこへのポインタをもつようにしてやればサイズが決定されると
— はくどー (@HKDnet) January 4, 2019
Rust 特有のアレコレについて悩みながらもやっている。特にCが書けるようになりたいわけでもないので2このまま Rust 版を育てるかもしれない。