Recommended
PDF
wakuwaku Scala ~Scala入門勉強会~ 資料
PDF
お前は PHP の歴史的な理由の数を覚えているのか
PDF
PPTX
PPT
PPTX
パフォーマンスの良いGASの書き方 Best Practice
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Boost.B-tree introduction
PDF
PDF
PDF
PDF
Boost.Preprocessorでプログラミングしましょう
KEY
iOSプログラマへ。HTML5 Canvasがおもしろい!
PDF
KEY
PDF
brainfuckを吐く自作言語bf-reusable
PPTX
PDF
PDF
PDF
クックパッド春の超絶技巧パンまつり 超絶技巧プログラミング編 資料
PDF
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
PDF
PDF
PPTX
Ocaml lecture slides 01 at axsh
More Related Content
PDF
wakuwaku Scala ~Scala入門勉強会~ 資料
PDF
お前は PHP の歴史的な理由の数を覚えているのか
PDF
PPTX
PPT
PPTX
パフォーマンスの良いGASの書き方 Best Practice
PDF
PDF
What's hot
PDF
PDF
PDF
PDF
PDF
PDF
Boost.B-tree introduction
PDF
PDF
PDF
PDF
Boost.Preprocessorでプログラミングしましょう
KEY
iOSプログラマへ。HTML5 Canvasがおもしろい!
PDF
KEY
PDF
brainfuckを吐く自作言語bf-reusable
PPTX
PDF
PDF
PDF
クックパッド春の超絶技巧パンまつり 超絶技巧プログラミング編 資料
PDF
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
PDF
Similar to Rust samurai#01
PDF
PPTX
Ocaml lecture slides 01 at axsh
PPTX
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
PDF
PPTX
PDF
これからの「言語」の話をしよう ―― 未来を生きるためのツール
PDF
PDF
PDF
KEY
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
PDF
マスターオブゴールーチンアンドチャネル スタートGo #1
PDF
PPTX
PPTX
PDF
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
PDF
PPTX
PDF
Patterns and Matching in Rust
PPTX
PDF
More from Noritada Shimizu
PDF
PDF
PDF
PDF
20150512 webgl-off-the-main-thread
PDF
PDF
asm.js x emscripten: The foundation of the next level Web games
PDF
PDF
2016 gunma.web games-and-asm.js
PDF
PDF
20151128 firefoxos-handson
PDF
PDF
Inspection & Tweak: Firefox を使ったフロント開発
PDF
PDF
20150829 firefox-os-handson
PDF
PDF
20150727 Development tools for Firefox OS apps
PDF
Firefox OS でアプリを作るときに気をつけたい N 個のこと
PDF
Firefox OSアプリ開発ハンズオン(Hello World編)
PDF
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
PDF
Application submission, management and manetization in Firefox Marketplace
Rust samurai#01 1. 2. 3. • 所属
• Mozilla Japan マーケティング部
• 慶應義塾大学 特別研究教員
• @chikoski
• プログラミング言語が好き
• JavaScript, Ruby, R
清水智公 (しみずのりただ)
4. 5. Its design is oriented toward concerns of
“programming in the large”, that is,
of creating and maintaining boundaries
– both abstract and operational –
that preserve large-system
integrity, availability and concurrency.
6. 7. 8. 9. エディタ
• Emacs : src/etc/emacs
• Vim :
https://github.com/mozilla/rust/blob/master/
src/etc/vim/syntax/rust.vim
https://github.com/wting/rust.vim
• Sublime:
https://github.com/dbp/sublime-rust
11. 12. 13. 14. 15. 16. 17. let hi = "hi";
let mut count = 0;
while count < 10 {
io::println(fmt!("count: %?", count));
count += 1;
}
ローカル変数の宣言
18. let hi = "hi";
let mut count = 0;
while count < 10 {
io::println(fmt!("count: %?", count));
count += 1;
}
単一代入
19. let hi = "hi";
let mut count = 0;
while count < 10 {
io::println(fmt!("count: %?", count));
count += 1;
}
mutable な変数の宣言
20. ブロックスコープ
fn main(){
let a = 1;
{
let b = 2;
io::println(int::to_str(a));
io::println(int::to_str(b));
}
io::println(int::to_str(b));
}
21. ブロックスコープ
fn main(){
let a = 1;
{
let b = 2;
io::println(int::to_str(a));
io::println(int::to_str(b));
}
io::println(int::to_str(b));
}
unresolved name: `b`
22. 23. 24. 25. グローバル変数はない
let a = 10;
fn main(){
io::println(int::to_str(a));
}
expected item but found `let`
26. 27. 28. 29. 30. 31. 32. 33. let price = 0;
if item == "salad" {
price = 3.50;
} else if item == "muffin" {
price = 2.25;
} else {
price = 2.00;
};
条件分岐
34. let price =
if item == "salad" {
3.50
} else if item == "muffin" {
2.25
} else {
2.00
};
if 文ではなく if 式
35. fizzbuzz
let msg = if(n % 15 == 0){
"FizzBuzz"
}else if(n % 3 == 0){
"Fizz"
}else if(n % 5 == 0){
"Buzz"
}else{
""
};
36. 37. match n {
n if n % 15 == 0 => "FizzBuzz",
n if n % 5 == 0 => "Buzz",
n if n % 3 == 0 => "Fizz",
_ => ""
}
fizzbuzz (with pattern match)
38. match n {
n if n % 15 == 0 => "FizzBuzz",
n if n % 5 == 0 => "Buzz",
n if n % 3 == 0 => "Fizz",
_ => ""
}
ガード節
39. 繰り返し
let mut n = 1;
while n < 100 {
let r = fizzbuzz(n);
io::println(fmt!("%? : %s", n, r));
n = n + 1;
}
40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 外部の変数を参照できない
fn line(a: int, b: int, x: int) -> int{
fn add(a: int) -> int{
return a + b
}
add(a * x)
}
attempted dynamic environment-capture
55. 56. 57. 58. 59. 60. 関数名の重複は許されない
fn line(a: int, b: int, x: int) -> int {
a * x + b
}
fn line(a: float, b: float, x: float)
-> float {
a * x + b
}
duplicate definition of value line
61. 高階関数
fn line(a: int, b: int, x: int, link: &fn(int) -> int) -> int{
a * link(x) + b
}
fn offset(x: int) -> int{
x + 2
}
fn main(){
let a = line(1, 0, 1, offset);
io::println(int::to_str(a));
}
62. 63. まとめ
• 変数
• mut をつけないと mutable にならない
• グローバル変数なし
• 条件分岐:if, match
• 繰り返し:while, loop
64. 65. 66. 67. Rust 情報源
• 公式サイト:http://www.rust-lang.org/
• メーリングリスト:
https://mail.mozilla.org/listinfo/rust-dev
• This Week in Rust:http://cmr.github.io/
• pcwalton:http://pcwalton.github.io/
• http://www.rust-.lang.jp/
ドメインだけ押さえた!翻訳者募集!
68.