Rustç¬èªã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«é Œããªãã¡ã¢ãªå®å šãžã®ã¢ãããŒããæ¢ããŸããRustã®æææš©ãšåçšã·ã¹ãã ããäžè¬çãªã¡ã¢ãªãšã©ãŒãé²ããå ç¢ã§é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãä¿èšŒããæ¹æ³ãåŠã³ãŸãã
Rustããã°ã©ãã³ã°ïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªãã®ã¡ã¢ãªå®å š
ã·ã¹ãã ããã°ã©ãã³ã°ã®äžçã§ã¯ãã¡ã¢ãªå®å šãéæããããšãæãéèŠã§ããåŸæ¥ãèšèªã¯ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ïŒGCïŒã«äŸåããŠã¡ã¢ãªãèªåçã«ç®¡çããã¡ã¢ãªãªãŒã¯ããã³ã°ãªã³ã°ãã€ã³ã¿ãªã©ã®åé¡ãåé¿ããŠããŸããããã ããGCã¯ããã©ãŒãã³ã¹ã®ãªãŒããŒããããšäºæž¬äžå¯èœæ§ãããããå¯èœæ§ããããŸããææ°ã®ã·ã¹ãã ããã°ã©ãã³ã°èšèªã§ããRustã¯ãç°ãªãã¢ãããŒããæ¡çšããŠããŸããããã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªãã§ã¡ã¢ãªå®å šãä¿èšŒããããšã§ããããã¯ãRustãä»ã®èšèªãšåºå¥ããã³ã¢ã³ã³ã»ããã§ããã驿°çãªæææš©ãšåçšã·ã¹ãã ã«ãã£ãŠå®çŸãããŸãã
æåã¡ã¢ãªç®¡çãšã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®åé¡ç¹
Rustã®ãœãªã¥ãŒã·ã§ã³ã«å ¥ãåã«ãåŸæ¥ã®æåã¡ã¢ãªç®¡çã¢ãããŒãã«é¢é£ããåé¡ãçè§£ããŸãããã
æåã¡ã¢ãªç®¡çïŒC/C++ïŒ
CãC++ã®ãããªèšèªã¯æåã¡ã¢ãªç®¡çãæäŸããéçºè ã¯ã¡ã¢ãªã¢ãã±ãŒã·ã§ã³ãšãã¢ãã±ãŒã·ã§ã³ã现ããå¶åŸ¡ã§ããŸãããã®å¶åŸ¡ã«ãããå Žåã«ãã£ãŠã¯æé©ãªããã©ãŒãã³ã¹ãåŸãããŸãããé倧ãªãªã¹ã¯ã䌎ããŸãã
- ã¡ã¢ãªãªãŒã¯ïŒäžèŠã«ãªã£ãã¡ã¢ãªããã¢ãã±ãŒã·ã§ã³ããã®ãå¿ãããšãã¡ã¢ãªãªãŒã¯ãçºçããå©çšå¯èœãªã¡ã¢ãªãåŸã ã«æ¶è²»ããã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã
- ãã³ã°ãªã³ã°ãã€ã³ã¿ïŒãã€ã³ã¿ãæãã¡ã¢ãªãè§£æŸãããåŸã«ãã€ã³ã¿ã䜿çšãããšãæªå®çŸ©ã®åäœãçºçããå€ãã®å Žåãã¯ã©ãã·ã¥ãã»ãã¥ãªãã£è匱æ§ã«ã€ãªãããŸãã
- äºéè§£æŸïŒåãã¡ã¢ãªã2åè§£æŸããããšãããšãã¡ã¢ãªç®¡çã·ã¹ãã ãç Žæããã¯ã©ãã·ã¥ãã»ãã¥ãªãã£è匱æ§ã«ã€ãªããå¯èœæ§ããããŸãã
ãããã®åé¡ã¯ãç¹ã«å€§èŠæš¡ã§è€éãªã³ãŒãããŒã¹ã§ã¯ããããã°ãéåžžã«å°é£ã§ããäºæž¬äžå¯èœãªåäœãã»ãã¥ãªãã£ãšã¯ã¹ããã€ãã«ã€ãªããå¯èœæ§ããããŸãã
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ïŒJava, Go, PythonïŒ
JavaãGoãPythonãªã©ã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³èšèªã¯ãã¡ã¢ãªç®¡çãèªååããéçºè ã®æåã¢ãã±ãŒã·ã§ã³ãšãã¢ãã±ãŒã·ã§ã³ã®è² æ ã軜æžããŸããããã«ãããéçºãç°¡çŽ åãããå€ãã®ã¡ã¢ãªé¢é£ã®ãšã©ãŒãè§£æ¶ãããŸãããGCã«ã¯ç¬èªã®èª²é¡ããããŸãã
- ããã©ãŒãã³ã¹ãªãŒããŒãããïŒã¬ããŒãžã³ã¬ã¯ã¿ã¯ãæªäœ¿çšã®ãªããžã§ã¯ããèå¥ããŠåå©çšããããã«ã宿çã«ã¡ã¢ãªãã¹ãã£ã³ããŸãããã®ããã»ã¹ã¯CPUãµã€ã¯ã«ãæ¶è²»ããç¹ã«ããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããã©ãŒãã³ã¹ã®ãªãŒããŒããããçºçããå¯èœæ§ããããŸãã
- äºæž¬äžå¯èœãªäžæåæ¢ïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡äžã«äºæž¬äžå¯èœãªäžæåæ¢ãåŒãèµ·ããå¯èœæ§ããããŸãããããã¯ãstop-the-worldãäžæåæ¢ãšåŒã°ããŸãããããã®ããŒãºã¯ããªã¢ã«ã¿ã€ã ã·ã¹ãã ããäžè²«ããããã©ãŒãã³ã¹ãå¿ èŠãšããã¢ããªã±ãŒã·ã§ã³ã§ã¯åãå ¥ããããªãå ŽåããããŸãã
- ã¡ã¢ãªãããããªã³ãã®å¢å ïŒã¬ããŒãžã³ã¬ã¯ã¿ãå¹ççã«åäœããã«ã¯ãæåã§ç®¡çãããã·ã¹ãã ãããå€ãã®ã¡ã¢ãªãå¿ èŠã«ãªãããšããããããŸãã
GCã¯å€ãã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäŸ¡å€ã®ããããŒã«ã§ãããã·ã¹ãã ããã°ã©ãã³ã°ãããã©ãŒãã³ã¹ãšäºæž¬å¯èœæ§ãéèŠãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã¯ãå¿ ãããçæ³çãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸããã
Rustã®ãœãªã¥ãŒã·ã§ã³ïŒæææš©ãšåçš
Rustã¯ç¬èªã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªãã®ã¡ã¢ãªå®å šã§ããããã¯ãå®è¡æã®ãªãŒããŒããããªãã«ã¡ã¢ãªå®å šã匷å¶ããäžé£ã®ã³ã³ãã€ã«æã«ãŒã«ã§ãããæææš©ãšåçšã·ã¹ãã ã«ãã£ãŠå®çŸãããŸããããã¯ãäžè¬çãªã¡ã¢ãªç®¡çã®ééããç¯ããªãããã«ãããéåžžã«å³æ Œã§ãããéåžžã«åœ¹ç«ã€ã³ã³ãã€ã©ãšèããŠãã ããã
æææš©
Rustã®ã¡ã¢ãªç®¡çã®äžæ žãšãªãæŠå¿µã¯æææš©ã§ããRustã®ãã¹ãŠã®å€ã«ã¯ããã®ææè ã§ãã倿°ããããŸããããå€ã®ææè ã¯äžåºŠã«1ã€ããååšã§ããŸãããææè ãã¹ã³ãŒãå€ã«ãªããšãå€ã¯èªåçã«ããããïŒãã¢ãã±ãŒã·ã§ã³ïŒãããŸããããã«ãããæåã§ã®ã¡ã¢ãªãã¢ãã±ãŒã·ã§ã³ã®å¿ èŠããªããªããã¡ã¢ãªãªãŒã¯ãé²ããŸãã
次ã®ç°¡åãªäŸãèããŠã¿ãŸãããã
fn main() {
let s = String::from("hello"); // sã¯æååããŒã¿ã®ææè
// ... sã§äœãããã ...
} // sã¯ããã§ã¹ã³ãŒãå€ã«ãªããæååããŒã¿ã¯ãããããããŸã
ãã®äŸã§ã¯ã倿°`s`ã¯æååããŒã¿ãhelloããææããŠããŸãã `s`ã`main`颿°ã®æåŸã«ã¹ã³ãŒãå€ã«ãªããšãæååããŒã¿ã¯èªåçã«ãããããããã¡ã¢ãªãªãŒã¯ãé²ããŸãã
æææš©ã¯ãå€ã®å²ãåœãŠæ¹æ³ãšé¢æ°ãžã®æž¡ãæ¹ã«ã圱é¿ããŸããå€ãæ°ãã倿°ã«å²ãåœãŠããããã颿°ã«æž¡ããããšãæææš©ã¯ç§»åãŸãã¯ã³ããŒãããŸãã
ç§»å
æææš©ãç§»åããããšãå ã®å€æ°ã¯ç¡å¹ã«ãªãã䜿çšã§ããªããªããŸããããã«ãããè€æ°ã®å€æ°ãåãã¡ã¢ãªãã±ãŒã·ã§ã³ãæãããšããªããªããããŒã¿ã¬ãŒã¹ããã³ã°ãªã³ã°ãã€ã³ã¿ã®ãªã¹ã¯ãè§£æ¶ãããŸãã
fn main() {
let s1 = String::from("hello");
let s2 = s1; // æååããŒã¿ã®æææš©ã¯s1ããs2ã«ç§»åãããŸã
// println!("{}", s1); // ããã¯s1ãç¡å¹ã«ãªã£ããããã³ã³ãã€ã«æãšã©ãŒãçºçããŸã
println!("{}", s2); // ããã¯s2ãçŸåšã®ææè
ã§ãããããåé¡ãããŸãã
}
ãã®äŸã§ã¯ãæååããŒã¿ã®æææš©ã¯`s1`ãã`s2`ã«ç§»åãããŸããç§»ååŸã`s1`ã¯ç¡å¹ã«ãªããããã䜿çšããããšãããšã³ã³ãã€ã«æãšã©ãŒãçºçããŸãã
ã³ããŒ
`Copy`ãã¬ã€ããå®è£ ããåïŒæŽæ°ãããŒã«å€ãæåãªã©ïŒã®å Žåãå²ãåœãŠãŸãã¯é¢æ°ã«æž¡ããããšãã«ãå€ã¯ç§»åãããã®ã§ã¯ãªãã³ããŒãããŸããããã«ãããå€ã®æ°ããç¬ç«ããã³ããŒãäœæããããªãªãžãã«ãšã³ããŒã®äž¡æ¹ãæå¹ãªãŸãŸã«ãªããŸãã
fn main() {
let x = 5;
let y = x; // xã¯yã«ã³ããŒãããŸã
println!("x = {}, y = {}", x, y); // xãšyã®äž¡æ¹ãæå¹ã§ã
}
ãã®äŸã§ã¯ã`x`ã®å€ã`y`ã«ã³ããŒãããŸãã `x`ãš`y`ã®äž¡æ¹ãæå¹ã§ç¬ç«ãããŸãŸã«ãªããŸãã
åçš
æææš©ã¯ã¡ã¢ãªå®å šã«ãšã£ãŠäžå¯æ¬ ã§ãããå Žåã«ãã£ãŠã¯å¶éãå³ãããªãå¯èœæ§ããããŸããæææš©ãè²æž¡ããã«ãã³ãŒãã®è€æ°ã®éšåã§ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ããå¿ èŠãããå ŽåããããŸããããã§åçšãç»å ŽããŸãã
åçšã䜿çšãããšãæææš©ãååŸããã«ããŒã¿ãžã®åç §ãäœæã§ããŸããåç §ã«ã¯æ¬¡ã®2çš®é¡ããããŸãã
- äžå€åç §ïŒããŒã¿ã®èªã¿åãã¯ã§ããŸããã倿Žã¯ã§ããŸãããåãããŒã¿ã«å¯ŸããŠè€æ°ã®äžå€åç §ãåæã«æã€ããšãã§ããŸãã
- å¯å€åç §ïŒããŒã¿ã倿Žã§ããŸããäžåºŠã«1ã€ã®ããŒã¿ã«å¯ŸããŠ1ã€ã®å¯å€åç §ããæã€ããšãã§ããŸããã
ãããã®ã«ãŒã«ã«ãããããŒã¿ãã³ãŒãã®è€æ°ã®éšåã«ãã£ãŠåæã«å€æŽãããããšããªããªããããŒã¿ã¬ãŒã¹ã鲿¢ãããããŒã¿ã®æŽåæ§ã確ä¿ãããŸãããããã¯ã³ã³ãã€ã«æã«ã匷å¶ãããŸãã
fn main() {
let mut s = String::from("hello");
let r1 = &s; // äžå€åç
§
let r2 = &s; // å¥ã®äžå€åç
§
println!("{} and {}", r1, r2); // äž¡æ¹ã®åç
§ãæå¹ã§ã
// let r3 = &mut s; // æ¢åã®äžå€åç
§ããããããããã¯ã³ã³ãã€ã«æãšã©ãŒãçºçããŸã
let r3 = &mut s; // å¯å€åç
§
r3.push_str(", world");
println!("{}", r3);
}
ãã®äŸã§ã¯ã`r1`ãš`r2`ã¯æåå`s`ãžã®äžå€åç §ã§ããåãããŒã¿ã«å¯ŸããŠè€æ°ã®äžå€åç §ãæã€ããšãã§ããŸãããã ããæ¢åã®äžå€åç §ãããéã«å¯å€åç §ïŒ`r3`ïŒãäœæããããšãããšãã³ã³ãã€ã«æãšã©ãŒãçºçããŸãã Rustã§ã¯ãåãããŒã¿ã«å¯ŸããŠå¯å€åç §ãšäžå€åç §ãåæã«æã€ããšã¯ã§ããªããšããã«ãŒã«ãé©çšãããŸããäžå€åç §ã®åŸã1ã€ã®å¯å€åç §`r3`ãäœæãããŸãã
ã©ã€ãã¿ã€ã
ã©ã€ãã¿ã€ã ã¯ãRustã®åçšã·ã¹ãã ã®éèŠãªéšåã§ãããããã¯ãåç §ãæå¹ãªã¹ã³ãŒããèšè¿°ããã¢ãããŒã·ã§ã³ã§ããã³ã³ãã€ã©ã¯ã©ã€ãã¿ã€ã ã䜿çšããŠãåç §ãåç §å ã®ããŒã¿ãããé·ãåç¶ããªãããã«ãããã³ã°ãªã³ã°ãã€ã³ã¿ãé²ããŸããã©ã€ãã¿ã€ã ã¯å®è¡æã®ããã©ãŒãã³ã¹ã«ã¯åœ±é¿ããŸããããããã¯ã³ã³ãã€ã«æã®ãã§ãã¯å°çšã§ãã
次ã®äŸãèããŠã¿ãŸãããã
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
fn main() {
let string1 = String::from("long string is long");
{
let string2 = String::from("xyz");
let result = longest(string1.as_str(), string2.as_str());
println!("The longest string is {}", result);
}
}
ãã®äŸã§ã¯ã`longest`颿°ã¯2ã€ã®æååã¹ã©ã€ã¹ïŒ`&str`ïŒãå ¥åãšããŠåãåãã2ã€ã®ãã¡æé·ã®æååã衚ãæååã¹ã©ã€ã¹ãè¿ããŸãã `<'a>`æ§æã¯ã©ã€ãã¿ã€ã ãã©ã¡ãŒã¿`'a`ãå°å ¥ããŸããããã¯ãå ¥åæååã¹ã©ã€ã¹ãšè¿ãããæååã¹ã©ã€ã¹ãåãã©ã€ãã¿ã€ã ãæã€å¿ èŠãããããšã瀺ããŸããããã«ãããè¿ãããæååã¹ã©ã€ã¹ãå ¥åæååã¹ã©ã€ã¹ãããé·ãåç¶ããªãããšãä¿èšŒãããŸããã©ã€ãã¿ã€ã ã¢ãããŒã·ã§ã³ããªããšãã³ã³ãã€ã©ã¯è¿ãããåç §ã®æå¹æ§ãä¿èšŒã§ããŸããã
ã³ã³ãã€ã©ã¯ãå€ãã®å Žåãã©ã€ãã¿ã€ã ãæšæž¬ããã®ã«ååãªã»ã©è³¢ãã§ããæç€ºçãªã©ã€ãã¿ã€ã ã¢ãããŒã·ã§ã³ã¯ãã³ã³ãã€ã©ãã©ã€ãã¿ã€ã ãç¬èªã«å€æã§ããªãå Žåã«ã®ã¿å¿ èŠã§ãã
Rustã®ã¡ã¢ãªå®å šã¢ãããŒãã®å©ç¹
Rustã®æææš©ãšåçšã·ã¹ãã ã«ã¯ãããã€ãã®å€§ããªå©ç¹ããããŸãã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªãã®ã¡ã¢ãªå®å šïŒRustã¯ã³ã³ãã€ã«æã«ã¡ã¢ãªå®å šãä¿èšŒããã©ã³ã¿ã€ã ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãšãã®é¢é£ãããªãŒããŒãããã®å¿ èŠæ§ãæé€ããŸãã
- ããŒã¿ã¬ãŒã¹ãªãïŒRustã®åçšã«ãŒã«ã¯ããŒã¿ã¬ãŒã¹ãé²ããå¯å€ããŒã¿ãžã®åæã¢ã¯ã»ã¹ãåžžã«å®å šã§ããããšãä¿èšŒããŸãã
- ãŒãã³ã¹ãæœè±¡åïŒRustã®æœè±¡åïŒæææš©ãåçšãªã©ïŒã«ã¯ã©ã³ã¿ã€ã ã³ã¹ããããããŸãããã³ã³ãã€ã©ã¯ã³ãŒããå¯èœãªéãå¹ççã«æé©åããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãåé¿ããã¡ã¢ãªé¢é£ã®ãšã©ãŒãé²ãããšã§ãRustã¯åªããããã©ãŒãã³ã¹ãå®çŸã§ããŸããããã¯CãC++ã«å¹æµããããšããããããŸãã
- éçºè ã®èªä¿¡ã®åäžïŒRustã®ã³ã³ãã€ã«æãã§ãã¯ã¯ãå€ãã®äžè¬çãªããã°ã©ãã³ã°ãšã©ãŒããã£ããããéçºè ã«ã³ãŒãã®æ£ç¢ºæ§ã«å¯Ÿããèªä¿¡ãäžããŸãã
å®éã®äŸãšãŠãŒã¹ã±ãŒã¹
Rustã®ã¡ã¢ãªå®å šãšããã©ãŒãã³ã¹ã«ãããå¹ åºãã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããŸãã
- ã·ã¹ãã ããã°ã©ãã³ã°ïŒãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãçµã¿èŸŒã¿ã·ã¹ãã ãããã€ã¹ãã©ã€ãã¯ãRustã®ã¡ã¢ãªå®å šãšäœã¬ãã«å¶åŸ¡ã®æ©æµãåããŸãã
- WebAssemblyïŒWasmïŒïŒRustã¯WebAssemblyã«ã³ã³ãã€ã«ã§ãã髿§èœãªWebã¢ããªã±ãŒã·ã§ã³ãå¯èœã«ããŸãã
- ã³ãã³ãã©ã€ã³ããŒã«ïŒRustã¯ãé«éã§ä¿¡é Œæ§ã®é«ãã³ãã³ãã©ã€ã³ããŒã«ãæ§ç¯ããããã®åªããéžæè¢ã§ãã
- ãããã¯ãŒãã³ã°ïŒRustã®åæå®è¡æ©èœãšã¡ã¢ãªå®å šã«ããã髿§èœãªãããã¯ãŒãã³ã°ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«é©ããŠããŸãã
- ã²ãŒã éçºïŒã²ãŒã ãšã³ãžã³ãšã²ãŒã éçºããŒã«ã¯ãRustã®ããã©ãŒãã³ã¹ãšã¡ã¢ãªå®å šã掻çšã§ããŸãã
å ·äœçãªäŸã次ã«ç€ºããŸãã
- ServoïŒMozillaã«ãã£ãŠéçºããã䞊åãã©ãŠã¶ãšã³ãžã³ã§ãRustã§èšè¿°ãããŠããŸãã Servoã¯ãè€éãªåæå®è¡ã·ã¹ãã ãåŠçããRustã®èœåã瀺ããŠããŸãã
- TiKVïŒPingCAPã«ãã£ãŠéçºããã忣ããŒããªã¥ãŒããŒã¿ããŒã¹ã§ãRustã§èšè¿°ãããŠããŸãã TiKVã¯ã髿§èœã§ä¿¡é Œæ§ã®é«ãããŒã¿ã¹ãã¬ãŒãžã·ã¹ãã ã®æ§ç¯ã«å¯ŸããRustã®é©åæ§ã瀺ããŠããŸãã
- DenoïŒRustã§èšè¿°ãããJavaScriptããã³TypeScriptçšã®ã»ãã¥ã¢ãªã©ã³ã¿ã€ã ã§ãã Denoã¯ãå®å šã§å¹ççãªã©ã³ã¿ã€ã ç°å¢ãæ§ç¯ããRustã®èœåã瀺ããŠããŸãã
Rustã®åŠç¿ïŒæ®µéçãªã¢ãããŒã
Rustã®æææš©ãšåçšã·ã¹ãã ã¯ãæåã¯åŠç¿ãé£ããå ŽåããããŸãããã ããç·Žç¿ãšå¿èãããã°ããããã®æŠå¿µãç¿åŸããRustã®åãåŒãåºãããšãã§ããŸããæšå¥šãããã¢ãããŒããæ¬¡ã«ç€ºããŸãã
- åºæ¬ããå§ããïŒRustã®åºæ¬çãªæ§æãšããŒã¿åãåŠç¿ããããšããå§ããŸãã
- æææš©ãšåçšã«çŠç¹ãåœãŠãïŒæææš©ãšåçšã®ã«ãŒã«ãçè§£ããã®ã«æéãè²»ãããŸããããŸããŸãªã·ããªãªã詊ããŠãã³ã³ãã€ã©ãã©ã®ããã«åå¿ãããã確èªããããã«ã«ãŒã«ãç Žã£ãŠã¿ãŠãã ããã
- äŸã調ã¹ãïŒãã¥ãŒããªã¢ã«ãšäŸã調ã¹ãŠãRustã®å®è·µçãªçµéšãç©ãã§ãã ããã
- å°ããªãããžã§ã¯ããæ§ç¯ããïŒå°ããªãããžã§ã¯ããæ§ç¯ããŠãç¥èãå¿çšããçè§£ãæ·±ããããšããå§ããŸãã
- ããã¥ã¡ã³ããèªãïŒå ¬åŒã®Rustããã¥ã¡ã³ãã¯ãèšèªãšãã®æ©èœã«ã€ããŠåŠç¿ããããã®åªãããªãœãŒã¹ã§ãã
- ã³ãã¥ããã£ã«åå ããïŒRustã³ãã¥ããã£ã¯å奜çã§ååçã§ãããªã³ã©ã€ã³ãã©ãŒã©ã ããã£ããã°ã«ãŒãã«åå ããŠã質åããããä»ã®äººããåŠãã ãããŠãã ããã
RustãåŠç¿ããããã«å©çšã§ããåªãããªãœãŒã¹ã¯ãããããããŸãã
- The Rust Programming LanguageïŒThe BookïŒïŒRustã«é¢ããå ¬åŒæžç±ããªã³ã©ã€ã³ã§ç¡æã§å ¥æã§ããŸãïŒhttps://doc.rust-lang.org/book/
- Rust by ExampleïŒããŸããŸãªRustæ©èœã瀺ãã³ãŒãäŸã®ã³ã¬ã¯ã·ã§ã³ïŒhttps://doc.rust-lang.org/rust-by-example/
- RustlingsïŒRustã®åŠç¿ã«åœ¹ç«ã€å°ããªæŒç¿ã®ã³ã¬ã¯ã·ã§ã³ïŒhttps://github.com/rust-lang/rustlings
çµè«
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªãã®Rustã®ã¡ã¢ãªå®å šã¯ãã·ã¹ãã ããã°ã©ãã³ã°ã«ããã倧ããªææã§ãã驿°çãªæææš©ãšåçšã·ã¹ãã ãæŽ»çšããããšã§ãRustã¯å ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åŒ·åã§å¹ççãªæ¹æ³ãæäŸããŸããåŠç¿æ²ç·ã¯æ¥åŸé ã«ãªãå¯èœæ§ããããŸãããRustã®ã¢ãããŒãã®å©ç¹ã¯æè³ãã䟡å€ããããŸããã¡ã¢ãªå®å šãããã©ãŒãã³ã¹ãåæå®è¡æ§ãå Œãåããèšèªãæ¢ããŠãããªããRustã¯åªããéžæè¢ã§ãã
ãœãããŠã§ã¢éçºã®ç¶æ³ãé²åãç¶ããã«ã€ããŠãRustã¯å®å šæ§ãšããã©ãŒãã³ã¹ã®äž¡æ¹ãåªå ããèšèªãšããŠéç«ã£ãŠãããéçºè ã¯æ¬¡äžä»£ã®éèŠãªã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããããªããããã©ã³ã®ã·ã¹ãã ããã°ã©ããŒã§ããããšããã®åéã®åå¿è ã§ããããšãRustã®ã¡ã¢ãªç®¡çã«å¯Ÿããç¬èªã®ã¢ãããŒããæ¢æ±ããããšã¯ããœãããŠã§ã¢èšèšã®çè§£ãåºããæ°ããªå¯èœæ§ãåãéãããšãã§ãã䟡å€ã®ããåãçµã¿ã§ãã