サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
zenn.dev/todesking
はじめに Rustには優れた所有権システムおよびRc<T>/Arc<T>があるので通常はGCを必要としないのですが、どうしても循環参照(それもrc::Weak<T>では解決できないタイプの)が必要となるケースというのが多数存在します。具体的には言語処理系および…… いや言語処理系くらいしかないな。しかしながら、言語処理系を実装するにあたってRustを選択するのは一般的な選択肢なので、これはゆゆしき問題です。 gcクレートによるGC導入 GC機能を提供するクレートはいくつかありますが、何も考えずシングルスレッドでGCしたいだけならgcクレートが手軽です。 Rc<T>/RefCell<T>の代わりにgc::Gc<T>/gc::GcCell<T>を使用するだけでOK。管理したい型にはgc::Traceおよびgc::Finalize traitを実装する必要があります。 // Gc<T>で管理した
let premium_users = select * from users where premium = 1; select count(*) from premium_users; select * from premium_users order by created_at; のようなことがしたいわけですよ。でも無理!ワハハ!! 一貫性のなさ cast(expr as type) という関数のようでそうでもない謎の記法とか(MariaDBリファレンスだと"function"らしいですが)、 '2023-01-01' + interval 1 secondのinterval部分は何なんだとか、文法が複雑すぎる。 人間に厳しい 一貫性を捨てても便利な記法を採用して書きやすくしているのかと思いきや、
FizzBuzzFS FizzBuzz問題といえば定期的にSNSで話題になっては変な解法が発明されることでおなじみですが(?)、ファイルシステムを使った事例が見当たらなかったのでやってみました。 まあ見ての通りというか…… /mnt/FizzBuzz に FizzBuzz.txt(8エクサバイト)があって、FizzBuzzが書いてあります。 どこまでも…… 容量の続く限り…… 以上!!!!!!! 技術解説 FUSE FUSE(Filesystem in USEr space)というソフトウェアを使うことで、簡単に新しいファイルシステムを実装することが可能です。 Rustにおいては、fuse crateの更新が停止した結果フォークが複数存在するようですが、利用者数と更新頻度的にfuser crateを使うのがよさそうです。 FileSystem traitが実装された値をmount2関数に渡
実用的な静的型付き言語には、たいていの場合危険なことをするバックドアが存在するものですが[1]、TypeScriptには一見してわからない場所にバックドアが存在するという特徴があります。 というわけで、様々な方法でunsafe_cast<T, U>(x: T): Uを書いてみました。便利。 謝辞: テクニックの多くはtkr氏の記事に依っています。 脚注 ScalaのasInstanceOf[T], HaskellのunsafeCoerce, OCamlのObj.magic, ... ↩︎
はじめに これはTypeScript Advent Calendarの11日目の記事です。 TS 4.1で導入されたTemplate literal typesが世間で話題ですね。 TypeScriptのTemplate string typesで湧き上がる界隈の様子 - Togetter Template String Types でパス文字列を解析してクエリする - Object.create(null) (ネタ) TypeScript 型パズルで作るmini interpreter by Yosuke Kurami TypeScriptにヤバい機能が入りそうなのでひとしきり遊んでみる - TechRacho Template titeral types で型上の簡易 Lisp パーサー - La Verda Luno Template Literal Types の基礎と .join
このページを最初にブックマークしてみませんか?
『zenn.dev』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く