RustからRのC APIを使う時、エラーをちゃんとハンドリングしたい
RのC APIを使う時、当然ですが任意の操作は失敗する可能性があります。
このために、RのコードでいうtryCatch()
にあたるものがいくつか提供されています。
https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Condition-handling-and-cleanup-code
この中で、もっともオーバーヘッドが少ないのが R_UnwindProtect()
であり、cpp11 でも extendr でも使われているものです。
しかし、これを使うにはけっこう難しい話を理解する必要があります。
RでC APIを使う時、SEXPをGCから守る3つの方法
extendrの実装おかしくない?、というのを最近調べていて、理解が深まったのでメモっておきます。
続きを読むメモ:2023年4月時点で rp-hal と rtic を使おうとして遭遇した問題
前回、大変そう、みたいなことを書いたけど、実際大変だったので遭遇した問題をメモっておく。 たぶん1年後くらいに見るとだいたい解決されてそうな気はする。
続きを読むメモ:rp-hal(RustでRaspberry Pi Picoをプログラミングするやつ)でPIOでシフトレジスタIC(74HC595)を使う
すでに詳しくブログを書かれている方がいるので、書くほどでもないと思いつつメモ。
続きを読むメモ:rp-hal(RustでRaspberry Pi Picoをプログラミングするやつ)でPIOを使ってPWMする
PIOでPWMを実現するのは、公式のexamplesにコードがある。
rp-halでもpio-rs経由でPIOが使えて、このコードをRustに書き直したバージョンが以下のコードらしい。 これを理解するのにちょっと手間取ったのでメモ。
続きを読む