Rust
実際のところ cargo.toml [dependencies] base64 = "0.13" image = "0.23" serialport = "4.0" logic.rs use base64::decode; use image::load_from_memory; use serialport::prelude::*; use std::io::BufReader; use std::time::Duration; fn main() -> Re…
実際のところ adder/ ├── Cargo.toml ├── src/ │ └── lib.rs └── tests/ └── add_tests.rs src/lib.rs pub fn add(a: i32, b: i32) -> i32 { a + b } tests/add_tests.rs use adder::add; #[test] fn test_add_positive_numbers() { assert_eq!(add(2, 3), 5…
実際のところ // lib.rs pub fn add(a: i32, b: i32) -> i32 { a + b } #[cfg(test)] mod tests { use super::*; #[test] fn test_add_positive_numbers() { assert_eq!(add(2, 3), 5); } #[test] fn test_add_negative_numbers() { assert_eq!(add(-2, -3),…
実際のところ プロジェクト生成 公式ご推奨のコマンドを実行してみます $ cargo new adder --libやると、こんな構造になります libはlibraryクレートという adder/ ├── Cargo.toml └── src/ └── lib.rs スクリプト 自動生成されたスクリプトは、こんな感じ p…
実際のところ toml [package] name = "hiragana-counter" version = "0.1.0" edition = "2021" [lib] crate-type = ["cdylib", "rlib"] [dependencies] eframe = { version = "0.24.0", features = ["wasm"] } wasm-bindgen = "0.2" wasm-bindgen-futures = …
実際のところ フォントの追加 $ cd projecthome $ mkdir assets $ cd assetsで、ここに Google Fonts からNotoSansJpをいれます。 zip形式なので $ unzip Noto_Sans_JP.zip toml [package] name = "guiproject" version = "0.1.0" edition = "2021" [depende…
実際のところ tomlファイル [package] name = "guiproject" version = "0.1.0" edition = "2021" [dependencies] eframe = "0.24.0" スクリプト use eframe::egui; fn main() -> Result<(), eframe::Error> { let options = eframe::NativeOptions { viewpor…
実際のところ 参考もと
ユーザー定義エラーも使えるらしいので、ためしてみました 実際のところ // カスタムエラー型の追加 #[derive(Debug)] enum UserError { DatabaseError(String), DuplicateEmail(String), UserNotFound(String), IoError(std::io::Error), SerdeError(serde_…
ユーザーの情報をemailを軸に更新できるようにします。 ついでに、UUIDをつけて後々なにかに使えるようにしときます。 実際のところ toml [package] name = "newproject" version = "0.1.0" edition = "2021" [dependencies] clap = { version = "4.5.2", fe…
機能を拡張して、ファイルに保存するようにします 知見を別の件で使うだろう事を考慮し、形式はJSONにしました 実際のところ tomlファイル [package] name = "newproject" version = "0.1.0" edition = "2021" [dependencies] clap = { version = "4.5.2", f…
練習用にアドレス帳みたいなのを作ります まずはClapで 実際のところ tomlファイル [package] name = "newproject" version = "0.1.0" edition = "2021" [build] name = "newproject" path = "src/main.rs" [dependencies] clap = { version = "4.4", featur…
deriveにcopyとcloneがありますが、違いがわからなかったのでメモ Rust言語の特徴である所有権の移動と密に関係している概念な様子 実際のところ // Copy型の例 fn process_point(p: Point) { println!("Processing: ({}, {})", p.x, p.y); } let p1 = Point…
実際のところ structとtrait 乱暴にまとめると、structがデータ構造を定義し、traitが振る舞いを定義するときに使うもの // データ構造を表現するstruct // 構造はprivateなもので、ユーザーは意識しないで済む struct User { name: String, email: String, …
RustにはCLAP(Command Line Argument Parser for Rust)という優秀なコマンドラインパーサーがあるそうなので、こいつを使って遊んでいきます。 実際のところ 導入 $ cargo add clap --features deriveとやるか、 tomlに clap = { version = "4.5.20", featur…
Ubuntu22LTSでRust言語をやる その6:teensy4.0で組み込み用環境no_Stdをためす - Bye Bye Moore の続き。 組み込みといえば外付けセンサー。 まずはI2Cのテストとして、秋月で調達しやすいADT7410を使ってみることにします akizukidenshi.com 実際のところ…
実際のところ toml [package] name = "teensy_led_blink" version = "0.1.0" edition = "2021" [dependencies] cortex-m = "0.7" #Teensy4.0のCortexの低レイヤ実装をする方法 cortex-m-rt = "0.7" #Teensy4.0の起動時のあれこれ。メモリ初期化とか embedded…
no_std環境は、要するにOSに依存するような機能を削ぎ落として使用するってことです。 ファイルの読み書きといった機能が無効になる上、メモリを動的に確保することができなくなったりします。 まぁ、よりC言語的になるというか……。 ただ、このお陰で動作が…
インターネットの強い人たちが絶賛するRustのすごいトコの一つ、エラーハンドリングを見ていきます。 実際のところ matchでエラーの有無により挙動を切り替えできる。 use std::error::Error; use std::fs::File; fn complex_operation() -> Result<(), Box<dyn Error>></dyn>…
Pythonにおけるpip、Rubyにおけるgemみたいなのが、Rustにもあります。 今回はactix-webというパッケージを使ってWEB鯖をつくってみます。 実際のところ とりあえずシンプルに パッケージ導入 tomlファイルというのがありましたが、こいつを弄ると入る様子 […
Rust言語が称賛される理由の一つに「所有権」というやつがあります。 データの取り扱いを、ユーザーに意識的に行わせることで、安全性を保ちます。 実際のところ 所有権の基礎 fn main() { let s1 = String::from("hello"); // 基本的な所有権の移動 let _s2…
実際のところ $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shbashrcに以下の値を追加 source "$HOME/.cargo/env"環境変数を再読込 $ exec $SHELL 動作確認 $ rustc --version rustc 1.82.0 (f6e511eec 2024-10-15)個人的好みでベースに…
2023年です。 2022年は戦争に為替変動にと大忙し……それでいて売上ベースである受託は絞られるという、中々渋い年でした。 そんな経緯もあり、2022年秋ごろから自社製品や新規営業を増やしているので、2023年は少しは動きが変わる事を期待しています。 2022年…
並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ作者:高野 祐輝オライリージャパンAmazon
基礎から学ぶ 組込みRust作者:中林 智之,井田 健太発売日: 2021/04/20メディア: 単行本(ソフトカバー)今を時めく低レイヤー向けの新兵器、Rust。 そのRustをSeeed社が出してる高機能STM32ボードWio-Terminalをターゲットにして組み込み技術を学んでいく本…