[binllion] enumで書いてみる
またもや前回の続きになりますが、structとトレイトを組み合わせで書けるのであればenumでも書けるのではないかと試行錯誤してみました。 バリアントと関数やメソッドを紐づけてConvert::ToHex.get()みた…
またもや前回の続きになりますが、structとトレイトを組み合わせで書けるのであればenumでも書けるのではないかと試行錯誤してみました。 バリアントと関数やメソッドを紐づけてConvert::ToHex.get()みた…
前回にて、型の制約で引数の制限をかけていましたが、それだけでは予期せぬ挙動の可能性がありました。 もう少し制約をかけると良さそうです。 トレイト境界という仕組みを使うと機能としての制約をつけ、挙動を想定することができます…
前回にてASCII変換処理はオリジナルの関数to_ascii_9()を使用することで落ち着きました。 次にこの関数を呼び出すことを考えましょう。 16進数に変換するto_hex()と同じ呼び出し方にすれば良いので下記のよ…
続いてバイナリデータをASCIIに変換して表示する処理を作っていきたいと思います。 そんな処理は当然Rustにあるだろうと思っていたのですが、執筆時点でstd::ascii::CharがExperimentalだったり、…
前回のサンプルデータを画面表示用に16進数表記でStringに変換してratatuiのVec<Line>型に変換する関数を追加してみました。 処理は見ていただければわかると思いますが、折り返し処理の確認のため…
編集用バッファとしてBinDataを作りましたが、アプリ全体として参照されたり、変更されたりしそうなのでコンテキストオブジェクトあるいはシングルトンパターンぽい状態管理用の構造体を作り、その中にBinDataを入れて、各…
大まかな外枠の表示ができたので編集用データの構造体を作っていきたいとおもいます。 エディター向けの構造体を調べたところ、Gap BufferやRope、Peace Table等があるようです。1 2 3 4 ただしこれら…
時間が取れたので久しぶりのRust開発の再開です。 4ヶ月ほど時間が経ってしまったので環境が多少古くなっているようです。新しい機能や修正を取り入れておきたいので、まずはツールチェインのアップデートから。 ツールチェインは…