RustéçºããŒã ã¯ãRustã®æ°ããŒãžã§ã³1.31.0ãšãRust 2018ãã®ãªãªãŒã¹ãçºè¡šããŸãã Rustã¯ã誰ããä¿¡é Œã§ããå¹ççãªãœãããŠã§ã¢ãäœæã§ããããã«ããããã°ã©ãã³ã°èšèªã§ãã
rustup
ã䜿çšããŠä»¥åã®ããŒãžã§ã³ã®Rustãã€ã³ã¹ããŒã«ãããŠããrustup
ãRustãããŒãžã§ã³1.31.0ã«ã¢ããã°ã¬ãŒãããã«ã¯ã次ãå®è¡ããã ãã§ãã
$ rustup update stable
rustup
ãŸã ã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ãåœç€Ÿã®Webãµã€ãã®å¯Ÿå¿ããããŒãžããã€ã³ã¹ããŒã«ã§ããŸãã Rust 1.31.0ã®è©³çްãªãªãªãŒã¹ããŒã㯠GitHubã§å
¥æã§ããŸãã
å®å®ããŒãžã§ã³1.31.0ã«å«ãŸãããã®
Rust 1.31ã¯ãRust 1.0以éãããããæãéèŠãªãªãªãŒã¹ã§ãïŒ ãRust 2018ãã®æåã®å埩ããã®ãªãªãŒã¹ã«å«ãŸããŠããŸããããããå¯äžã®é©æ°ã§ã¯ãããŸããïŒ æ¹åã®ã¬ãã¥ãŒã¯é·ããªããããç®æ¬¡ã¯æ¬¡ã®ãšããã§ãã
- Rust 2018
- èªåœçã§ã¯ãªãæä»£
- ã¢ãžã¥ãŒã«ã·ã¹ãã ã®å€æŽ
- ã©ã€ãã¿ã€ã ãå°åºããããã®è¿œå ã«ãŒã«
const fn
- æ°ããããŒã«
- ã€ã³ã¹ãã«ã¡ã³ã¿ã«ã³ãŒãã®å質ãã§ãã¯
- ããã¥ã¡ã³ã
- äž»é¡ã¯ãŒãã³ã°ã°ã«ãŒã
- æ°ãããŠã§ããµã€ã
- æšæºã©ã€ãã©ãªã®å®å®å
- 貚ç©ã®åŒ·å
- éçºè
ããªãªãŒã¹
Rust 2018
Rust 2018 ã«ã€ããŠã¯ã3æã«åã㊠ã7æã«æžããŸãã ã Rust 2018ãå¿
èŠãªçç±ã®è©³çްã«ã€ããŠã¯ããããã®åºçç©ãåç
§ããŠãã ããã ãã®ã¬ãã¥ãŒã§ã¯ãå€ãã®ããšãäŒããå¿
èŠããããããRust 2018ã«ã€ããŠã®ã¿èª¬æããŸãããŸããMozilla Hacksã®æçš¿ ïŒ translation ïŒ ã§èªãããšãã§ããŸãã
èŠããã«ãRust 2018ã¯ãéå»3幎éã«è¡ã£ããã¹ãŠã®äœæ¥ãäžè²«ããå
šäœã«çµ±åããæ©äŒã§ãã Rust 2018ã¯åãªãèšèªã®æ¹åã§ã¯ãããŸããã ãããã«å ããŠã次ã®ãã®ãå«ãŸããŸãã
- ããŒã«ãããïŒIDEã§ã®ãµããŒãã
rustfmt
ãClippyïŒ - ããã¥ã¡ã³ã
- 察象ã¯ãŒãã³ã°ã°ã«ãŒã
- æ°ãããŠã§ããµã€ã
ããã«ãããããã¹ãŠã«ã€ããŠãã詳现ã«ããŸãä»ã®é©æ°ã«ã€ããŠã話ãããŸãã
Cargoã䜿çšããŠæ°ãããããžã§ã¯ããäœæããŸãããã
$ cargo new foo
Cargo.toml
ã®å
容ã¯Cargo.toml
ã§ãã
[package] name = "foo" version = "0.1.0" authors = ["Your Name <you@example.com>"] edition = "2018" [dependencies]
æ°ããããŒïŒ edition
ã[package]
ã»ã¯ã·ã§ã³ã«è¿œå ãããŸããã 2018
ã€ã³ã¹ããŒã«ãããããšã«æ³šæããŠãã ããã 2015
ã€ã³ã¹ããŒã«ããããšãã§ããŸã-ããŒãèŠã€ãããªãå Žåããã®å€ã¯ããã©ã«ãã§èšå®ãããŸãã
Rust 2018ã䜿çšãããšãRust 2015ã§èš±å¯ãããŠããªãããã€ãã®æ°æ©èœãããã¯è§£é€ãããŸãã
åããã±ãŒãžã¯2015ãŸãã¯2018ã¢ãŒãã§ãããäžç·ã«æ©èœããããšã«æ³šæããããšãéèŠã§ãã 2018ãšãã£ã·ã§ã³ãããžã§ã¯ãã¯2015ãšãã£ã·ã§ã³ã®äŸåé¢ä¿ã䜿çšã§ãã2015ãšãã£ã·ã§ã³ãããžã§ã¯ãã¯2018ãšãã£ã·ã§ã³ã®äŸåé¢ä¿ã䜿çšã§ããŸãã ããã«ããããšã³ã·ã¹ãã ã®æŽåæ§ã確ä¿ãããæ¢åã®ã³ãŒããšã®äºææ§ãç¶æããªããããã¹ãŠã®æ°æ©èœããªãã·ã§ã³ã«ãªããŸãã ããã«ãRust 2015ã³ãŒããRust 2018ã«ç§»æ€ããããšã決å®ããå Žåã cargo fix
ã«ãã倿Žãèªåçã«è¡ãããšãã§ããŸãã
ããªãã¯å°ããããšãã§ããŸãïŒæ°æ©èœèªäœã¯ã©ãã§ããïŒ ãŸãããã®ãšãã£ã·ã§ã³ã®æ©èœãšäºææ§ãããå ŽåãRust 2015ã§ã远å ãããŸãã ãããã£ãŠãã»ãšãã©ã®èšèªã¯ã©ãã§ãåããŸãŸã§ãã ç·šéããã¥ã¢ã«ãåç
§ããŠãåæ°æ©èœããã³ãã®ãã®ä»ã®èŠä»¶ã®rustc
ã®æå°ããŒãžã§ã³ãrustc
ããŠãã ããã ãã ããåå¥ã«èšåããå¿
èŠãããããã€ãã®å€§ããªé©æ°ããããŸããéèªåœã®æå¹æéãšã¢ãžã¥ãŒã«ã·ã¹ãã ã®ããã€ãã®å€æŽã§ãã
èªåœçã§ã¯ãªãæä»£
é廿°å¹Žã«ããã£ãŠRustããã©ããŒããŠããå ŽåããNLLããŸãã¯ãéèªåœç寿åœããšããçšèªã«åºãããããšããããŸãã ããã¯å°éçšèªã§ããç°¡åã«èšãã°ãåãæã¯è³¢ããªãã以åã¯æåŠããŠããæ£ããã³ãŒããåãå
¥ããããã«ãªããŸããã äŸãèããŠã¿ãŸãããïŒ
fn main() { let mut x = 5; let y = &x; let z = &mut x; }
ã³ã³ãã€ã«ãšã©ãŒãã¹ããŒããããã«äœ¿çšãããRustïŒ
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable --> src/main.rs:5:18 | 4 | let y = &x; | - immutable borrow occurs here 5 | 6 | let z = &mut x; | ^ mutable borrow occurs here 7 | } | - immutable borrow ends here
ããã¯ããªã³ã¯ã®ç掻é åããåå¥çã«ãå®çŸ©ãããããã§ãã ã€ãŸããã¹ã³ãŒãå
ã§y
ãå床䜿çšããªããŠãã main
ã®æåŸã§y
ãã¹ã³ãŒãããå€ãããŸã§y
åçšã¯ã¢ã¯ãã£ãã§ãããšèŠãªãããŠããŸããã äžèšã®ã³ãŒãã§ã¯ãã¹ãŠåé¡ãããŸããããäŸåé¢ä¿ã¢ãã©ã€ã¶ãŒã¯ãããçè§£ã§ããŸããã§ããã
ããã§ããã®ã³ãŒãã¯æ£åžžã«ã³ã³ãã€ã«ãããŸãã
ãããã y
ã䜿çšããy
ã©ããªããŸããïŒ ããšãã°ã次ã®ããã«ïŒ
fn main() { let mut x = 5; let y = &x; let z = &mut x; println!("y: {}", y); }
Rustã䜿çšããŠãã®ãšã©ãŒãçºçããŸããïŒ
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable --> src/main.rs:5:18 | 4 | let y = &x; | - immutable borrow occurs here 5 | let z = &mut x; | ^ mutable borrow occurs here ... 8 | } | - immutable borrow ends here
Rust 2018ã§ã¯ããã®ãšã©ãŒã¡ãã»ãŒãžãæ¹åãããŸããã
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable --> src/main.rs:5:13 | 4 | let y = &x; | -- immutable borrow occurs here 5 | let z = &mut x; | ^^^^^^ mutable borrow occurs here 6 | 7 | println!("y: {}", y); | - borrow later used here
y
ãç¯å²å€ã«ãªãå Žæã瀺ã代ããã«ãç«¶åããåçšãçºçããå Žæã瀺ããŸãã ããã«ããããã®çš®ã®ãããã°ãšã©ãŒã倧å¹
ã«ç°¡çŽ åãããŸãã
Rust 1.31ã§ã¯ãããã¯Rust 2018å°çšã®æ¹åã§ããä»åŸRust 2015ã«è¿œå ããäºå®ã§ãã
ã¢ãžã¥ãŒã«ã·ã¹ãã ã®å€æŽ
ã¢ãžã¥ãŒã«ã·ã¹ãã ã¯ãRustãåããŠåŠç¿ãã人ã«ãšã£ãŠã¯é£ããå ŽåããããŸãã ãã¡ããããã¹ã¿ãŒããã«ã¯æéãããããã®ãåžžã«ãããŸãã ããããã¢ãžã¥ãŒã«ãå€ãã®äººã«ãšã£ãŠéåžžã«æ¥ããããäž»ãªçç±ã¯ãã¢ãžã¥ãŒã«ã®ã·ã¹ãã ãå®çŸ©ããåçŽã§äžè²«ããã«ãŒã«ã«ããããããããã®äœ¿çšã®çµæãççŸããç¥ç§çã§äžèªç¶ã«èŠãããããããªãããã§ãã
ãã®ããã2018幎çã§ã¯ãã¹ã®åäœæ¹æ³ã«ããã€ãã®å€æŽãå ããã¢ãžã¥ãŒã«ã·ã¹ãã ãç°¡çŽ åããçè§£ããããããŠããŸãã
以äžã«ç°¡åãªèŠçŽã瀺ããŸãã
extern crate
ãä»ã®ã»ãšãã©ã©ãã§ãå¿
èŠãªããªããŸããã#[macro_use]
屿§ãuse
代ããã«ã use
ãuse
ãã¯ããã€ã³ããŒãã§ããŸãã- 絶察ãã¹ã¯ã³ã³ããã®ååã§å§ãŸããŸã
crate
ããŒã¯ãŒãã¯çŸåšã®ã³ã³ãããæããŸãã foo.rs
ãšfoo/
ãµããã£ã¬ã¯ããªã¯å
±åã§ããŸãã ãµãã¢ãžã¥ãŒã«ããµããã£ã¬ã¯ããªã«é
眮ããå Žåã mod.rs
äžèŠã«ãªããŸããã
ã«ãŒã«ã®ä»»æã®ã»ããã®ããã«èŠããŸãããäžè¬çã«ãã¡ã³ã¿ã«ã¢ãã«ã¯å€§å¹
ã«ç°¡çŽ åãããŠããŸãã
ããã«å€ãã®è©³çްããããŸãããã¹ãŠã®è©³çްã«ã€ããŠã¯ãç·šéããã¥ã¢ã«ãåç
§ããŠãã ããã
ã©ã€ãã¿ã€ã ãå°åºããããã®è¿œå ã«ãŒã«
äž¡æ¹ã®ãšãã£ã·ã§ã³ã§å©çšå¯èœãªæ¹åã«ã€ããŠè©±ããŸãããïŒ impl
ãããã¯ãšé¢æ°å®çŸ©ã«ããã€ãã®è¿œå ã®æšè«èŠåã远å ããŸããã ãã®ãããªã³ãŒãïŒ
impl<'a> Reader for BufReader<'a> {
次ã®ããã«èšè¿°ã§ããŸãã
impl Reader for BufReader<'_> {
Lifetime '_
ã¯ããŸã BufReader
ããã©ã¡ãŒã¿ãŒãšããŠåãå
¥ããŠããããšã瀺ããŠããŸãããååãä»ããå¿
èŠã¯ãããŸããã
寿åœã¯ãŸã æ§é ã§å®çŸ©ããå¿
èŠããããŸãã ãã ãã以åã»ã©ãã€ã©ãŒãã¬ãŒãã³ãŒããèšè¿°ããå¿
èŠã¯ãããŸããã
äŸåé¢ä¿: 'a
ãåºåãããŸãã å¿
èŠã«å¿ããŠãæç€ºçã«æå®ããããšãã§ããŸãã ãã®ãããªå Žæã§å°æ¥æ€éããä»ã®æ©äŒãæ€èšããŠããŸãããä»ã®ãšããå
·äœçãªèšç»ã¯ãããŸããã
const fn
Rustã«ã¯ã颿°ã宣èšããæ¹æ³ãããã€ããããŸããéåžžã®é¢æ°ã®å Žåã¯unsafe fn
ãå®å
šã§ãªã颿°ã®å Žåã¯unsafe extern fn
ãå€éšé¢æ°ã®å Žåã¯extern fn
ã§ãã ãã®ãªãªãŒã¹ã§ã¯ã颿°ã宣èšããæ°ããæ¹æ³const fn
远å ãããŠããŸãã æ¬¡ã®ããã«äœ¿çšãããŸãã
const fn foo(x: i32) -> i32 { x + 1 }
宿°é¢æ°ã¯éåžžã®é¢æ°ãšããŠåŒã³åºãããšãã§ããŸãããããã«ãä»»æã®å®æ°ã³ã³ããã¹ãã§äœ¿çšã§ããŸãã åæã«ãããã°ã©ã ã®å®è¡äžã§ã¯ãªããã³ã³ãã€ã«æã«å®è¡ãããŸãã äŸïŒ
const SIX: i32 = foo(5);
foo
颿°ã¯ã³ã³ãã€ã«æã«å®è¡ããã SIX
ã¯6
ã«èšå®ãããŸãã
宿°é¢æ°ã¯ãéåžžã®é¢æ°ãå®è¡ã§ããããšããã¹ãŠå®è¡ããããšã¯ã§ããŸãããæ±ºå®çãªçµæãå¿
èŠã§ãã ããã¯ä¿¡é Œæ§ã®çç±ããéèŠã§ãã çŸåšã®åœ¢åŒã§ã¯ã宿°é¢æ°ã¯æäœã®æå°éã®ãµãã»ãããå®è¡ã§ããŸãã ãããã§ã§ããããšã®äŸã次ã«ç€ºããŸãã
- æŽæ°æŒç®ãšæ¯èŒæŒç®ã䜿çšãã
&&
ããã³||
以å€ã®è«çæŒç®ã䜿çšããŸã- é
åãæ§é ãåæãããã³ã¿ãã«ãèšèšãã
- ä»ã®å®æ°é¢æ°ãåŒã³åºã
- é
åããã³ã¹ã©ã€ã¹ã®ã€ã³ããã¯ã¹ã«ããã¢ã¯ã»ã¹
- æ§é äœãšã¿ãã«ã®ãã£ãŒã«ãã«ã¢ã¯ã»ã¹ãã
- 宿°ã䜿çšããŸãïŒãã ããéçãªå€ã¯äœ¿çšãããããããžã®åç
§ã䜿çšããŸããïŒ
&
ããã³*
ãªã³ã¯ã䜿çš- æŽæ°å€ãžã®çãã€ã³ã¿ã®ãã£ã¹ããé€ããã£ã¹ãå
宿°é¢æ°ã®æ©èœãæ¡åŒµããŸãããå®éã«ã¯const fn
ã䜿çšããã«ã¯äžèšã®ã»ããã§ååã§ãã
詳现ã«ã€ããŠã¯ãããã¥ã¢ã«ãåç
§ããŠãã ããã
æ°ããããŒã«
2018幎çã¯ãRustããŒã«ãšã³ã·ã¹ãã ã®æ°ããã¬ãã«ã®æç床ã®å§ãŸãã瀺ããŠããŸãã CargoãRustdocãããã³Rustupã¯ãããŒãžã§ã³1.0以éã®äž»èŠãªããŒã«ã§ãã 2018幎çã§ã¯ã誰ãã䜿çšã§ããæ°äžä»£ã®ããŒã«ãClippyãRustfmtãããã³IDEããµããŒããããããã«ãªããŸããã
å®å®ããRustã§clippy
Static Code Analyzerãå©çšã§ããããã«ãªããŸããã rustup component add clippy
ä»ããŠã€ã³ã¹ããŒã«ãã rustup component add clippy
ããŠã cargo clippy
å®è¡rustup component add clippy
ãŸãã Clippyã¯ããŒãžã§ã³1.0ãåãåããrustcãšåãéçãã§ãã¯ã®å®å®æ§ãä¿èšŒããŠããŸãã æ°ãããã§ãã¯ã远å ããããå€ããã§ãã¯ã®æ©èœãæ¡åŒµãããã§ããŸãããå€ããã§ãã¯ã¯åé€ã§ããŸããïŒå€ããã®ãšããŠã®ã¿ããŒã¯ã§ããŸãïŒã ããã¯ãclippyã§ã³ã³ãã€ã«ããã³ãŒãã¯ãclippyã§ã³ã³ãã€ã«ãç¶ããããšãæå³ããŸãïŒçæãããã§ãã¯ãèšå®ãããŠããªãå ŽåïŒ
deny
çµç±ã®ãšã©ãŒïŒããæ°ããèŠåãçæãããå ŽåããããŸãã
Rustfmtã¯ãRustã§ã³ãŒãããã©ãŒãããããããã®ããŒã«ã§ãã ã³ãŒãã®èªåãã©ãŒãããã¯æéãç¯çŽããããã«ãã³ãŒããå
¬åŒã®Rustã¹ã¿ã€ã«ã«è¿ã¥ããŸãã rustup component add rustfmt
ãrustup component add rustfmt
ã cargo fmt
ã³ãã³ãã䜿çšããŠã€ã³ã¹ããŒã«ã§ããŸãã
çŸåšã®ãªãªãŒã¹ã«ã¯Rustfmt 1.0ãå«ãŸããŠããŸãã ä»åŸãRustfmtã®åŸæ¹äºææ§ãä¿èšŒããŸãã仿¥ã³ãŒãããã©ãŒãããããå Žåããã©ãŒãããã¯å°æ¥å€æŽãããŸããïŒããã©ã«ãã®ãã©ã¡ãŒã¿ãŒã®ã¿ïŒã äžäœäºææ§ãšã¯ãCIã§Rustfmtãå®è¡ããããšãå®çšçã§ããããšãæå³ããŸãïŒ cargo fmt --check
䜿çšïŒã ããããšãã£ã¿ãŒã§ã®ãä¿åæã®ãã©ãŒãããããšãšãã«è©ŠããŠã¿ãŠãã ãããããããã°ãã¯ãŒã¯ãããŒã«é©åœãèµ·ãããŸãã
IDEãµããŒãã¯ãRustã§æã人æ°ã®ããããŒã«æ©èœã®1ã€ã§ãã çŸåšãããã€ãã®é«å質ã®ãœãªã¥ãŒã·ã§ã³ããããŸãã
IDEã§ã®ãµããŒãäœæ¥ã¯å®äºããŠããŸããã ç¹ã«ãRLSããŒã¹ã®ãšãã£ã¿ãŒã§ã®ã³ãŒãè£å®ã¯æšæºã«éããŠããŸããã ãã ããäž»ã«åãããã¥ã¡ã³ããããã³ãå®çŸ©ãžã®ç§»è¡ãã®ãµããŒããå¿
èŠãªå Žåã¯ãæºè¶³ã§ãã
Rust 1.30ã§ã¯ã #[rustfmt::skip]
ãªã©ã®ãæ©åšå±æ§ããå®å®åããŸããã Rust 1.31ã§ã¯ã #[allow(clippy::bool_comparison)]
ãã㪠"tool lints"ã®ãããªãã®ãå®å®ãããŸããã ããã«ããããã§ãã¯çšã®åå空éãæå®ããŠããããã®ããŒã«ã®ç±æ¥ãæç¢ºã«ããããšãã§ããŸãã
以åã«Clippyãã§ãã¯ã䜿çšããããšãããå Žåã¯ã次ã®ããã«ç§»è¡ã§ããŸãã
cfg_attr
ã¯ããå¿
èŠãããŸããïŒ ãŸããæ°ããã¹ã¿ã€ã«ã®äœ¿çšã«åãæ¿ããã®ã«åœ¹ç«ã€èŠåã衚瀺ãããŸãã
ããã¥ã¡ã³ã
ä»å¹ŽRustdocã«ã¯ããã€ãã®æ¹è¯ãå ããããå®å
šã«æžãçŽãããæ¬ãThe Rust Programming LanguageããªãªãŒã¹ãããŸããã No Starch PressããçŽã®ã³ããŒã賌å
¥ã§ããŸãïŒ
以åã¯æ¬ã®ã第2çããšåŒã°ããŠããŸããããæåã®å°å·çã«ãªã£ãããæ··ä¹±ãçããŸããã çµå±ãå°å·çã¯å®æçã«æŽæ°ãããäºå®ã§ãã æçµçã«ãNo Starchãšã®å€ãã®è°è«ã®åŸãåãªãªãŒã¹ã§Webãµã€ãäžã®æ¬ãæŽæ°ããããšã決å®ãããNo Starchã¯å®æçã«å€æŽãååŸããŠå°å·ããŸãã ãã®æ¬ã¯ããªã売ããŠããã ãã©ãã¯ã¬ãŒã«ãºã³ãŒãã®è³éãéããŠããŸã ã
ãã®æ¬ã®æ°ããããŒãžã§ã³ã¯ãã¡ãã§èŠã€ããããšãã§ããŸãã
äž»é¡ã¯ãŒãã³ã°ã°ã«ãŒã
ä»å¹Žãç§ãã¡ã¯4ã€ã®ã¯ãŒãã³ã°ã°ã«ãŒãã®èšç«ãçºè¡šããŸããïŒ
- ãããã¯ãŒã¯ãµãŒãã¹
- ã³ãã³ãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³
- Webassssembly
- çµã¿èŸŒã¿æ©åš
ã°ã«ãŒãã¯ããããã®åé åã§Rustãæ¹åããããã«éåžžã«æžåœã«åããŸããã 以äžã«ããã€ãã®ææã瀺ããŸãã
- ãããã¯ãŒã¯ãµãŒãã¹ã¯Futuresã®ã€ã³ã¿ãŒãã§ã€ã¹ãåèšèšããããã«async / awaitã远å ããŸããã ãããã®æ¹åã¯ãŸã ãªãªãŒã¹ãããŠããŸããããããããã§ãïŒ
- CLIããŒã ã¯ãã³ãã³ãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³ãæ¹åããããã«ã©ã€ãã©ãªãšããã¥ã¡ã³ãã«åãçµã¿ãŸããã
- WebAssemblyã¯ãRustãwasmãšå
±ã«äœ¿çšããããã®å€ãã®äžçã¯ã©ã¹ã®ããŒã«ããªãªãŒã¹ããŸããã
- çµã¿èŸŒã¿ããã€ã¹ã®å Žåãå®å®ããRustã§ARMãéçºã§ããããã«ãªããŸããïŒ
ããã«ã€ããŠã¯ãæ°ãããµã€ãã§è©³ããç¥ãããšãã§ããŸãïŒ
æ°ãããŠã§ããµã€ã
å
é± ããŠã§ããµã€ãã®æ°ããããŒãžã§ã³ãçºè¡šããŸããã rust-lang.orgã®å
¬åŒããŒãžã§ã³ã«ãªããŸããïŒ
ãããäœæããããã«ãå€ãã®äººã
ã«ãšã£ãŠ1幎ã®ä»äºãå¿
èŠã§ããã 宿ãŸã§ã«ã¯ãŸã ããã¹ãããšããããããããŸãããç§ãã¡ã¯ãã®ä»äºã«èªããæã£ãŠããŸãã
æšæºã©ã€ãã©ãªã®å®å®å
æ°ããFrom
å®è£
ã远å ãããŸããïŒ
u8
ã¯From<NonZeroU8>
å®è£
ããããã«ãªããŸãããããã¯ä»ã®æ°å€åããã³NonZero
åçã®åã«ã€ããŠãåæ§Option<&T>
ã &mut
ãšåæ§ã«From<&Option<T>>
å®è£
ããŸã
æ¬¡ã®æ©èœãå®å®åãããŸããã
詳现ã«ã€ããŠã¯ããªãªãŒã¹ããŒããåç
§ããŠãã ããã
貚ç©ã®åŒ·å
Cargoã¯ãHTTP / 2ã䜿çšããŠããã±ãŒãžã䞊è¡ããŠããŒãããŸãã
ããã«ã extern crate
ãªãã·ã§ã³ã«ãªã£ãããã extern crate foo as bar;
æžãã®ã¯ã€ã©ã€ã©ããã§ãããextern crate foo as bar;
äŸåé¢ä¿ã®ååã倿ŽããŸãã ãããã£ãŠãæ¬¡ã®æ¹æ³ã§Cargo.toml
ã§å®è¡ã§ããŸãã
[dependencies] baz = { version = "0.1", package = "foo" }
ãŸãã¯ãåçã«ïŒ
[dependencies.baz] version = "0.1" package = "foo"
foo
ããã±ãŒãžã¯ãã³ãŒãã§äœ¿çšããããã®baz
ãšããŠå©çšå¯èœã«ãªããŸããã
詳现ã«ã€ããŠã¯ããªãªãŒã¹ããŒããåç
§ããŠãã ããã
éçºè
1.31.0
éåžžãã¬ãã¥ãŒã®æåŸã«ãåé¡ã®æºåã«è²¢ç®ãã人ã
ã«æè¬ããŸãã ããããä»åã¯ãéå»ãšã¯ç°ãªãããã®ãªã¹ãã¯ãæ¯æŽãããã¹ãŠã®äººã
ãããã³è¡ããããã¹ãŠã®äœæ¥éãå®å
šã«ã¯ç¶²çŸ
ããŠããŸããã éåžžã®ãªãªãŒã¹ã¯ãããã6é±éã®äœæ¥ã®çµæã§ããããã®ãªãªãŒã¹ã¯3幎éã®åªåã®é倧æã§ãããèšå€§ãªæ°ã®äººã
ãäœæããç¡æ°ã®ãªããžããªã«åæ ãããŠããŸãã çæ§ãšäžç·ã«ä»äºãã§ããããšãå¬ããæããŸããä»åŸ3幎éãRustãç¶ç¶çã«éçºãããããšã楜ãã¿ã«ããŠããŸãã
翻蚳è
ããïŒRustycrateã³ãã¥ããã£ã®ã¡ã³ããŒãšãå人çã«@dashadee ã ozkriff ã humbug ã mvlabatã®ç¿»èš³ãšæ ¡æ£ã®æ¯æŽã«ç¹å¥ãªæè¬ã衚æããŸãã