[binllion] Rustの借用のライフタイムを理解する
前回、可変参照は1つのみなのでN太はなにもできない、となっていましたがライフタイムを考慮すれば別の世界線も見えてきます。 借用のライフタイムを元に組み替えた場合を見てみましょう。 続:可変参照 S夫 わるいなN太 この&…
前回、可変参照は1つのみなのでN太はなにもできない、となっていましたがライフタイムを考慮すれば別の世界線も見えてきます。 借用のライフタイムを元に組み替えた場合を見てみましょう。 続:可変参照 S夫 わるいなN太 この&…
ところで、同じcontentsを複数描画するために前回のコードではrender_widget()を呼び出す際に渡す引数を&contentsとしていました。 このように変数に&がつくと変数そのものではなく変…
入力部分の処理は大まかな骨組みができたと思いますので次は画面表示について進めていきたいと思います。 crosstermでスクラッチから表示処理を構築していくのもよいですが、便利なクレートを利用して手間を減らしたいと思いま…
前回で各機能をモジュールに分割しました。しかし、コードはすべてmain.rsファイルに収まっており見通しが悪いです。 もしかしたら、誤って不要な変更を行ってしまうかもしれません。 まだ十分サイズは小さいですがコードが膨ら…
前回、機能毎に関数で切り出して細分化してみましたがよりRustぽくするためにモジュール化を行います。 モジュールとすることで関連するコードをまとめたり、アクセス範囲を狭めたり、処理内容を隠蔽することができます。 上記がソ…
今までのコードはキーボードからの入力をio::stdin().bytes()で読み込み、処理を行ってきましたがcrosstermでも入力処理を提供しています。 こちらはキーボードだけでなくマウスの入力やウィンドウリサイズ…
エラー処理を行う ここでunwrap()について考えてみましょう。 このコードの中でunwrap()が使われているのは下記の3箇所です。 enable_raw_mode()のドキュメントを見ると、enable_raw_m…
crateの追加 では端末を制御してrawモードにするためにcrateを使うようにしましょう。このような機能を提供するcrateは複数ありますが今回はcrosstermを使用します。 下記のcargo addコマンド1を…