技術

std::sync::mpsc::channelで少しハマったのでメモ

std::sync::mpsc - Rustの挙動についてちょっと知見を持ったので綴っていく。 やりたいこと めっちゃ重たいタスクがN個あって、それぞれにスレッドを作ってmpsc::channel経由でメインスレッドに値を返してもらう例を考える。 use std::thread; use std::sync…

goroutineで自作ランタイム上にsetTimeoutを再現する(実装の手順とcallback-hellもついてくるよ!!)

こんばんは、id:Kroutonです。RustのFutureについて調べていたはずが*1いつの間にかcallbackでsetTimeoutを再現するコードをGoで書いていたのでその実装手順について簡単に書きたいと思います。実用性はほぼないです。 注意書き 筆者がプログラミングを始め…

自作言語の構文を考えるのがめんどくさいそこのアナタ、Rustのマクロで楽してもいいわよ?

最近 とっくんのYouTubeチャンネル - YouTube さんの再度ハマり言語野が支配されてます、id:Krouton です。 事の発端 頭の中の大蛇丸が「今日はexpression-orientedな言語を作っていくことにするわね」「構文を考えるのがめんどくさいそこのアナタ、AST設計…

Goの[]byte -> stringへのcastってshrinkするんですか?

珍しく技術系の投稿をします(ただし疑問、忘備録 tooEnoughBuf := make([]byte, tooEnoughSize) Write1(tooEnoughBuf, src) string(tooEnoughBuf) == string(src) // false をしたい時のbufの長さをshrinkする方法を考えています。なぜこの等価判定がfalseに…