ã2026幎çãRustã®å§ãæ¹ â å®å šã§é«éãªããã°ã©ãã³ã°ã®ç¬¬äžæ©
- rustupã§ã®ã€ã³ã¹ããŒã«ãšcargoã®äœ¿ãæ¹
- æææš©ã»åçšã»ã©ã€ãã¿ã€ã ã®æŠå¿µãçè§£ãã
- ãšã©ãŒãã³ããªã³ã°ïŒResult/OptionïŒ
- cratesã«ããäŸå管ç
ã»ããã¢ããæé
# rustupã§ã€ã³ã¹ããŒã«ïŒæšå¥šïŒ
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# ããŒãžã§ã³ç¢ºèª
rustc --version
cargo --version
# æ°èŠãããžã§ã¯ãäœæ
cargo new myapp
cd myapp
cargo run
cargoã³ãã³ãæ©èŠè¡š
cargo new ãããžã§ã¯ãå # æ°èŠäœæ
cargo build # ãã«ãïŒãããã°ïŒ
cargo build --release # ãã«ãïŒæé©åïŒ
cargo run # å®è¡
cargo test # ãã¹ã
cargo check # åãã§ãã¯ã®ã¿ïŒéãïŒ
cargo add ããã±ãŒãžå # äŸåããã±ãŒãžè¿œå
cargo fmt # ãã©ãŒããã
cargo clippy # ãªã³ã
ã¯ãããŠã®ã³ãŒãïŒæææš©ã®äŸïŒ
fn main() {
// æææš©ã®ç§»åïŒmoveïŒ
let s1 = String::from("hello");
let s2 = s1; // s1ã®æææš©ãs2ã«ç§»ã
// println!("{}", s1); // ãšã©ãŒïŒs1ã¯ãã䜿ããªã
// åçšïŒborrowïŒ
let s3 = String::from("world");
print_str(&s3); // åç
§ãæž¡ãïŒæææš©ã¯ç§»åããªãïŒ
println!("{}", s3); // ãŸã 䜿ãã
// ãšã©ãŒãã³ããªã³ã°
let result: Result<i32, String> = Ok(42);
match result {
Ok(n) => println!("æå: {}", n),
Err(e) => println!("倱æ: {}", e),
}
}
fn print_str(s: &str) {
println!("{}", s);
}
ããããè©°ãŸããã€ã³ã
Q: æææš©ãšã©ãŒãå€ãããŠå
ã«é²ããªã
â ããã¯Rustç¹æã®å£ã§ãå€ãã®åŠç¿è
ãçµéšããŸãããŸã㯠clone() ã§åé¿ããªããåãã³ãŒããäœããåŸã
ã«åçšã»åç
§ã«çœ®ãæããŠããæ¹éã广çã§ãã
Q: lifetime ãšã©ãŒãé£ãããã
â æåã¯ã©ã€ãã¿ã€ã ãæç€ºçã«æžããªããŠãæžãã³ãŒãïŒã©ã€ãã¿ã€ã çç¥èŠåãé©çšãããã±ãŒã¹ïŒããå§ããŸããããã³ã³ãã€ã©ã®ãšã©ãŒã¡ãã»ãŒãžãéåžžã«äžå¯§ãªã®ã§ãå¿
ãèªãã§ã¿ãŠãã ããã
Q: ã³ã³ãã€ã«ãé
ã
â Rustã¯ã³ã³ãã€ã«æéãé·ãã§ããéçºäžã¯ cargo checkïŒåãã§ãã¯ã®ã¿ïŒã䜿ããšéã確èªã§ããŸãã