Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
前スレ
Rust Part6
http://mevius.5ch.net/test/read.cgi/tech/1532714678/
探検
Rust Part7
■ このスレッドは過去ログ倉庫に格納されています
2019/07/14(日) 23:31:47.54ID:PySyhRf9
442デフォルトの名無しさん
2019/10/08(火) 00:43:17.33ID:EV6VUNWa ウィンドーズホンだとC#からC++/CXを経由してネイティブなC++が呼べたお
443デフォルトの名無しさん
2019/10/08(火) 00:45:06.10ID:0ezsQlmk なるほど。開発環境が決まっててABI決めうちできるならいけるのか。
444デフォルトの名無しさん
2019/10/09(水) 09:16:04.87ID:ffKM9u5G Dがあるじゃん
445デフォルトの名無しさん
2019/10/09(水) 11:04:16.03ID:+5ZYxB02 ここの住民の低レベルさが確定した
446デフォルトの名無しさん
2019/10/09(水) 11:15:47.99ID:7UOBKYJf レベルの高い話題くれ
447デフォルトの名無しさん
2019/10/09(水) 17:58:10.09ID:PhcKq1+0 Cは社交界のオキテを知らない村娘だから
不用意に呼ぶとズッキュウウウンしちゃったりするのよ
だから簡単に呼べなかったりするけど呼べるときはシャワーも浴びずにすっ飛んでくる、そんな子
不用意に呼ぶとズッキュウウウンしちゃったりするのよ
だから簡単に呼べなかったりするけど呼べるときはシャワーも浴びずにすっ飛んでくる、そんな子
448デフォルトの名無しさん
2019/10/09(水) 19:00:00.88ID:xdNe6xdo C++のライブラリへのバインディングでほとんどのAPIがunsafe&unsafeって書いて無い奴もunsafeかもしれんから自分で気をつけてね☆
みたいのがあるんやが
これってRustで書く意味無くね…?
みたいのがあるんやが
これってRustで書く意味無くね…?
449デフォルトの名無しさん
2019/10/10(木) 00:27:32.81ID:sVTH7Uak 貴方がRustで書き直せば喜ぶ人もいるんじゃない?
450デフォルトの名無しさん
2019/10/10(木) 09:54:53.26ID:yMym0WfO ま〜つもと
いけいけまつもと
がんばれまつもと
いけいけまつもと
がんばれまつもと
451デフォルトの名無しさん
2019/10/10(木) 10:51:54.74ID:LImRHacY452デフォルトの名無しさん
2019/10/10(木) 13:45:05.68ID:sZ93Becg Box<T>のTを初期化せずに返すunsafe fn box_t() -> Box<T> があったとして
let mut t;
unsafe {
t = box_t();
// Tの初期化
}
にするのと
let mut t = unsafe { box_t() };
// Tの初期化
ですますのとどっちが良いRust?
let mut t;
unsafe {
t = box_t();
// Tの初期化
}
にするのと
let mut t = unsafe { box_t() };
// Tの初期化
ですますのとどっちが良いRust?
453デフォルトの名無しさん
2019/10/10(木) 14:05:19.62ID:p3GDnYn8 Rustプログラミング入門
https://www.ohmsha.co.jp/book/9784274224355/
https://www.ohmsha.co.jp/book/9784274224355/
454デフォルトの名無しさん
2019/10/10(木) 14:59:57.87ID:MXl+fq4L455デフォルトの名無しさん
2019/10/10(木) 19:40:43.29ID:tKt5RHA7 なんでUnsafeメモリ領域にしなかったんだ…
456デフォルトの名無しさん
2019/10/10(木) 21:10:29.28ID:emWne1To ムンッ
457デフォルトの名無しさん
2019/10/11(金) 09:08:20.83ID:15rXT0oG >>448
unsafeなAPIに対してrustで安全なラッパーを被せてやれれば意味がある
unsafeなAPIに対してrustで安全なラッパーを被せてやれれば意味がある
458デフォルトの名無しさん
2019/10/11(金) 09:11:01.85ID:+EEmVP7L unsafe fn vec_t_n(n: usize) -> Vec<T> {
let mut v: Vec<T> = Vec::with_capacity(n);
v.set_len(n);
v
}
fn vec_t_n(n: usize) -> Vec<T> {
let mut v: Vec<T> = Vec::with_capacity(n);
unsafe { v.set_len(n); }
v
}
unsafe fnにするかfnにするか
例えばutf-8を保証するStringのようにTがなにかを保証する型だとして
Vec<T>の中身がTでないかもしれないからunsafe fnが良いRustでOK?
let mut v: Vec<T> = Vec::with_capacity(n);
v.set_len(n);
v
}
fn vec_t_n(n: usize) -> Vec<T> {
let mut v: Vec<T> = Vec::with_capacity(n);
unsafe { v.set_len(n); }
v
}
unsafe fnにするかfnにするか
例えばutf-8を保証するStringのようにTがなにかを保証する型だとして
Vec<T>の中身がTでないかもしれないからunsafe fnが良いRustでOK?
459デフォルトの名無しさん
2019/10/11(金) 11:00:26.28ID:hkXt1Gtm >>455
1文字ずつ文字間開いてるとucs2で書かれてるように見える
1文字ずつ文字間開いてるとucs2で書かれてるように見える
460デフォルトの名無しさん
2019/10/11(金) 15:38:54.43ID:LwZAFcHp >>458
そのコードだけで言えばset_len()を使うことで保証されなくなるlengthの正しさを
呼び出し側が保証する必要があるのかどうか
from_utf8_uncheckedみたいな別のunsafe fn使ってればそれによって壊される安全性があるなら
その安全性を呼び出し側が保証する必要があるのかどうか
そのコードだけで言えばset_len()を使うことで保証されなくなるlengthの正しさを
呼び出し側が保証する必要があるのかどうか
from_utf8_uncheckedみたいな別のunsafe fn使ってればそれによって壊される安全性があるなら
その安全性を呼び出し側が保証する必要があるのかどうか
461デフォルトの名無しさん
2019/10/15(火) 20:37:26.43ID:NGLZQHSs https://keens.github.io/blog/2015/09/23/rustwokakutokinochiken/
move semanticsのお陰でGCがないので本当に小さい。hello, worldが277KBだった。
Javaででかいのが当たり前で大昔の感覚を忘れてしまったんだが
ちいさい?
move semanticsのお陰でGCがないので本当に小さい。hello, worldが277KBだった。
Javaででかいのが当たり前で大昔の感覚を忘れてしまったんだが
ちいさい?
462デフォルトの名無しさん
2019/10/15(火) 21:56:51.61ID:m8AinitX その千分の一でもまだでかい
463デフォルトの名無しさん
2019/10/15(火) 22:12:04.54ID:Ko1HPs1y バイナリゴルフが流行ってんの?
464デフォルトの名無しさん
2019/10/15(火) 22:36:57.07ID:icVT30E7 たった13バイトの文字列をコンソールに出力するだけで283648バイトを浪費wwwww
465デフォルトの名無しさん
2019/10/15(火) 22:39:45.49ID:hhqZ1XTX minimal runtimeってタイトルなんだからランタイムが小さいって話だろ。比較対象はGoとかHaskellとかであって、Cが小さいなんてのは当たり前。
466デフォルトの名無しさん
2019/10/16(水) 08:58:56.22ID:OaKYrwsF 270kBは何が入ってるの
467デフォルトの名無しさん
2019/10/16(水) 13:15:16.66ID:dmmazo8P468デフォルトの名無しさん
2019/10/16(水) 13:29:20.87ID:lb+wp7Wk ファミコン版のスターフォースのROMは16KBやったんやで
469デフォルトの名無しさん
2019/10/16(水) 13:39:20.98ID:KKGk/G0e 一方ルーストはhello, worldとコンソールに表示させるだけで277KBwww
470デフォルトの名無しさん
2019/10/16(水) 18:54:57.62ID:7R9Tu3z4 ファミコンのドラクエ3が256KBだっけ
471デフォルトの名無しさん
2019/10/16(水) 19:33:59.18ID:rINTnV3z Kbitじゃない?
472デフォルトの名無しさん
2019/10/16(水) 21:08:46.19ID:9tVPGt2A エミュROMでぐぐったら出てきた
ドラクエ3が256KByte
ドラクエ3が128KByte
ドラクエ1が64KByte
どれもKbitではない
ドラクエ3が256KByte
ドラクエ3が128KByte
ドラクエ1が64KByte
どれもKbitではない
473デフォルトの名無しさん
2019/10/17(木) 00:23:19.63ID:TtVNUhvN N88-BASICとかディスク拡張命令とか考えなければ32 KBに収まってた
数十KBというのは広大な情報量
人間の遺伝子もジャンクDNAを除けば10 KB強ぐらいなのではないか
数十KBというのは広大な情報量
人間の遺伝子もジャンクDNAを除けば10 KB強ぐらいなのではないか
474デフォルトの名無しさん
2019/10/17(木) 00:25:43.60ID:z0Xtc2vv475デフォルトの名無しさん
2019/10/17(木) 17:16:51.68ID:TwA5RghT go だと Hello, work! だけで 2MB でした本当にありがとうございました
476デフォルトの名無しさん
2019/10/17(木) 18:57:57.40ID:yPX5iNuE 日本は欧米と比べてココがダメ!
↓
韓国のほうがもっとダメなのでセーフ!
↓
韓国のほうがもっとダメなのでセーフ!
477デフォルトの名無しさん
2019/10/17(木) 20:26:17.00ID:Osa6WCSE >>475
デバッグ情報をストリップしてください
デバッグ情報をストリップしてください
478デフォルトの名無しさん
2019/10/17(木) 20:41:23.80ID:8y1HJh15 https://www.atmarkit.co.jp/ait/articles/1910/17/news088.html
「Rust」言語を採用したAWS、Rustプロジェクト支援を開始
Amazon Web Services(AWS)は2019年10月14日(米国時間)、オープンソースのシステムプログラミング言語「Rust」について、開発プロジェクトをスポンサーとして支援することを発表した。
Rustは、高速で信頼性が高く、効率的なコードを作成、保守できるように設計されている。2015年に最初の安定版がリリースされて以来、実システムへの導入が大きく進んでおり、GoogleやMicrosoft、Mozillaのような企業がいずれもRustを使用している。
例えばMicrosoftは自社製品の脆弱(ぜいじゃく)性の約7割を占めるメモリ安全性の問題を解決するためにRustが役立つと指摘している(関連記事)。
AWSでもRustの利用は大幅に拡大しており、「Lambda」「EC2」「S3」のようなサービスにおいて、パフォーマンスに敏感なコンポーネント用の言語として採用している。
AWSは先ごろ、軽量のマイクロ仮想マシン(microVM)を数秒で起動できる安全な仮想化技術「Firecracker」をオープンソースとして公開したが、ここでもRustが採用されている(関連記事)。
「Rust」言語を採用したAWS、Rustプロジェクト支援を開始
Amazon Web Services(AWS)は2019年10月14日(米国時間)、オープンソースのシステムプログラミング言語「Rust」について、開発プロジェクトをスポンサーとして支援することを発表した。
Rustは、高速で信頼性が高く、効率的なコードを作成、保守できるように設計されている。2015年に最初の安定版がリリースされて以来、実システムへの導入が大きく進んでおり、GoogleやMicrosoft、Mozillaのような企業がいずれもRustを使用している。
例えばMicrosoftは自社製品の脆弱(ぜいじゃく)性の約7割を占めるメモリ安全性の問題を解決するためにRustが役立つと指摘している(関連記事)。
AWSでもRustの利用は大幅に拡大しており、「Lambda」「EC2」「S3」のようなサービスにおいて、パフォーマンスに敏感なコンポーネント用の言語として採用している。
AWSは先ごろ、軽量のマイクロ仮想マシン(microVM)を数秒で起動できる安全な仮想化技術「Firecracker」をオープンソースとして公開したが、ここでもRustが採用されている(関連記事)。
479デフォルトの名無しさん
2019/10/18(金) 01:27:06.30ID:RRRrLQ0r それでも数秒かかるんか…
コールドスタートの悪夢未だ醒めず
コールドスタートの悪夢未だ醒めず
480デフォルトの名無しさん
2019/10/18(金) 08:13:39.39ID:dDUU5P0o >例えばMicrosoftは自社製品の脆弱(ぜいじゃく)性の約7割を占めるメモリ安全性の問題を解決するためにRustが役立つと指摘している(関連記事)。
これWindowsの脆弱性の話だろうけど、
静的解析ツールでは解決しないってことなのか?
これWindowsの脆弱性の話だろうけど、
静的解析ツールでは解決しないってことなのか?
481デフォルトの名無しさん
2019/10/18(金) 15:26:11.27ID:/rPuRJSX482デフォルトの名無しさん
2019/10/18(金) 17:46:16.42ID:lmpJOwiE mut を マットって読んでる人いる?
コアチーム含めミュート派が大勢なのは知ってるけど
eがないとミュートって読むのは不自然だし、時々eをタイプしそうになるから
マット派になろうかと思ってるんだが
コアチーム含めミュート派が大勢なのは知ってるけど
eがないとミュートって読むのは不自然だし、時々eをタイプしそうになるから
マット派になろうかと思ってるんだが
483デフォルトの名無しさん
2019/10/18(金) 17:52:26.42ID:+uRRCvkS おれはミューツ派
484デフォルトの名無しさん
2019/10/18(金) 17:55:14.75ID:uhy/qlU/485デフォルトの名無しさん
2019/10/18(金) 17:59:19.15ID:G0LYzWL6 どう見てもムッと
486デフォルトの名無しさん
2019/10/18(金) 18:12:40.01ID:7Ocq1iZd むーと
487デフォルトの名無しさん
2019/10/18(金) 18:29:52.38ID:lmpJOwiE 結構いろんな読み方してんのね
マット派いたから安心して転向するわ
ちなみにドイツ語ではムートって読んで勇気って意味らしい
マット派いたから安心して転向するわ
ちなみにドイツ語ではムートって読んで勇気って意味らしい
488デフォルトの名無しさん
2019/10/18(金) 20:27:28.69ID:4X7KT/ZF Rustの単語のセンスだけはどうも好きになれん
489デフォルトの名無しさん
2019/10/18(金) 20:30:24.39ID:uhy/qlU/ わかる
fnとかpubとかunwrapとか普通にわかりにくい
fnとかpubとかunwrapとか普通にわかりにくい
490デフォルトの名無しさん
2019/10/18(金) 21:57:09.28ID:lmpJOwiE pubはまあわかるけど
fnとunwrapは他言語でもあるし普通にわかりやすいと思ってたわ
IntoIteratorとかは素直にIterableでいいのにとは思う
fnとunwrapは他言語でもあるし普通にわかりやすいと思ってたわ
IntoIteratorとかは素直にIterableでいいのにとは思う
491デフォルトの名無しさん
2019/10/19(土) 00:46:14.72ID:ZEJ60z1R しかしRustでOS作ったらCより性能悪かったという記事があったはず
新しくOS用のプログラミング言語を作った方が良いのでは
RustはOS開発を主眼にしてるわけじゃないだろう
新しくOS用のプログラミング言語を作った方が良いのでは
RustはOS開発を主眼にしてるわけじゃないだろう
492デフォルトの名無しさん
2019/10/19(土) 01:22:54.66ID:+gqAFVgo OSの性能って曖昧過ぎて何測ってるのかわからん
493デフォルトの名無しさん
2019/10/19(土) 04:43:06.59ID:VYVT60v2 Redoxめっちゃマッハやった
494デフォルトの名無しさん
2019/10/19(土) 07:34:16.56ID:uIADZHgb Rustは配列の境界値チェックがあるから普通に使うとCよりちょっと遅いよ
495デフォルトの名無しさん
2019/10/19(土) 13:01:40.81ID:sh4W9dNy >>494
分岐予測があるので理由はそこじゃない
分岐予測があるので理由はそこじゃない
496デフォルトの名無しさん
2019/10/19(土) 13:28:05.60ID:a3cu9K9L は?
497デフォルトの名無しさん
2019/10/19(土) 13:43:06.95ID:ZEJ60z1R OS組もうとするとRustの言語概念を無視するような書き方をしなきゃいけない
みたいに書いてあったんだけど
みたいに書いてあったんだけど
498デフォルトの名無しさん
2019/10/19(土) 13:44:39.15ID:xHh5MvNF 「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説
ttps://www.atmarkit.co.jp/ait/articles/1909/13/news133.html
このソースは
A high-speed network driver written in C, Rust, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python
ttps://github.com/ixy-languages/ixy-languages
これかな
ttps://www.atmarkit.co.jp/ait/articles/1909/13/news133.html
このソースは
A high-speed network driver written in C, Rust, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python
ttps://github.com/ixy-languages/ixy-languages
これかな
499デフォルトの名無しさん
2019/10/19(土) 17:05:59.60ID:xnS8qN86500デフォルトの名無しさん
2019/10/19(土) 18:07:21.38ID:Xn59Im0u いや普通にOSソース見ればそらrust向いてねーわってなるよ。
杓子定規にrust使おうってほうが気が狂ってるわ。
杓子定規にrust使おうってほうが気が狂ってるわ。
501デフォルトの名無しさん
2019/10/19(土) 18:16:31.77ID:JHoWAbaJ Rustを使わないからそうなっているのかもしれんぞ
どこでRustだと不利なのか説明してくれ
どこでRustだと不利なのか説明してくれ
502デフォルトの名無しさん
2019/10/19(土) 18:58:13.46ID:VwkXsBh7 ストレージからプロセスを読んで起動する、とか
そもそもコンテキストスイッチングの処理とかは所有権の概念(データの寿命が入れ子)から外れてくる
気がするが、別にunsafeにせねばならないほどでもないキモス
他に何かある?
そもそもコンテキストスイッチングの処理とかは所有権の概念(データの寿命が入れ子)から外れてくる
気がするが、別にunsafeにせねばならないほどでもないキモス
他に何かある?
503デフォルトの名無しさん
2019/10/19(土) 19:38:38.55ID:fKOzCfED その昔はlispやforthでもos書いたりしたんだからrustで書けないことないだろう。
504デフォルトの名無しさん
2019/10/20(日) 00:31:55.71ID:huwBBQor redoxがあるけど。
505デフォルトの名無しさん
2019/10/20(日) 11:39:50.17ID:Q377Ee/+ それで実際Rustはバグ発生率低いの?
506デフォルトの名無しさん
2019/10/20(日) 12:22:34.24ID:f+d3Kcps バグ発生率ってどうやってカウントするのが一般的なんやろか?
完全にただの思いつきで無意味な比較だけどgithubのgoとrustで総issue数/contributor数だと1人あたり2倍ぐらいgoのが多いね
完全にただの思いつきで無意味な比較だけどgithubのgoとrustで総issue数/contributor数だと1人あたり2倍ぐらいgoのが多いね
507デフォルトの名無しさん
2019/10/20(日) 13:14:08.41ID:Df2Q09El issueってバグじゃないだろ。
機能要望とか議論とかあるじゃん。
機能要望とか議論とかあるじゃん。
508デフォルトの名無しさん
2019/10/20(日) 23:15:26.37ID:ADDbXmaX 小さめのサイズの本で、初心者向けの本が出た!
Rustプログラミング入門、酒井 和哉、2019/10/13
Rustプログラミング入門、酒井 和哉、2019/10/13
509デフォルトの名無しさん
2019/10/20(日) 23:22:23.45ID:ADDbXmaX >>506
バグ発生率は、バスタブ曲線だろ。
初期によくバグる
土方をやってると、バグを多く出さないと、客に提出できないw
漏れは、平均的なIQ レベルより、間違いが少ないから、
いつも、アホみたいなバグを、わざと自分で作って、バグ発生数を増やしていたw
あらかじめ勉強している人は、滅多に間違わないから、バグ発生数基準だと困るw
一方、全く勉強していない香具師は、バグが多い
バグ発生率は、バスタブ曲線だろ。
初期によくバグる
土方をやってると、バグを多く出さないと、客に提出できないw
漏れは、平均的なIQ レベルより、間違いが少ないから、
いつも、アホみたいなバグを、わざと自分で作って、バグ発生数を増やしていたw
あらかじめ勉強している人は、滅多に間違わないから、バグ発生数基準だと困るw
一方、全く勉強していない香具師は、バグが多い
510デフォルトの名無しさん
2019/10/21(月) 03:46:22.99ID:15XQsNX7 俺は世界で一番この本を待ってた!!!!!
511デフォルトの名無しさん
2019/10/21(月) 13:21:09.04ID:c9dhXgWB 仕様書にバグが多いのはあれわざと仕込んでるのかなるほど
512デフォルトの名無しさん
2019/10/22(火) 20:56:02.71ID:pBzGAt4J ネストした構造体のコンストラクトパターンみたいなやつはもっとチュートリアルで
説明した方がいいんでないのとは思う。
多分めんどくさい書き方にしかならんからやらんのだろうけれど。
説明した方がいいんでないのとは思う。
多分めんどくさい書き方にしかならんからやらんのだろうけれど。
513デフォルトの名無しさん
2019/10/23(水) 15:46:33.91ID:/ejQejyx ?の便利さに感動している
514デフォルトの名無しさん
2019/10/23(水) 16:06:56.63ID:77J5IX+m え、なに?
文字化けしてますよ
文字化けしてますよ
515デフォルトの名無しさん
2019/10/23(水) 17:55:49.61ID:GdFoVnvN 三項演算子は便利だったなぁ、と他言語を思い出して感動してるってことかな
516デフォルトの名無しさん
2019/10/23(水) 18:12:17.77ID:AT7YtDx+ 普通にResultの話じゃなくて?
517デフォルトの名無しさん
2019/10/23(水) 20:07:35.94ID:r6mLYpNF 組み込みもネットワークツールもほとんどc以上の生産性を出すことないしな。。
一番有効な領域ってデバッガーじゃねーの?とは思う。
一番有効な領域ってデバッガーじゃねーの?とは思う。
518デフォルトの名無しさん
2019/10/23(水) 20:47:39.59ID:/ejQejyx Bookを6章まで読んだ俺が >>224 で書いたのが
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=dc60559b7af47298d305be80b340ee98
?の便利さに気づいた俺が書いたのが
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=308e7fe634f1e539c1f936c3989022f0
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=dc60559b7af47298d305be80b340ee98
?の便利さに気づいた俺が書いたのが
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=308e7fe634f1e539c1f936c3989022f0
519デフォルトの名無しさん
2019/10/23(水) 21:06:25.79ID:5Hzic27k .file_name()?.to_str()?.to_string()
Rustだっさ
Rustだっさ
520デフォルトの名無しさん
2019/10/23(水) 21:12:36.43ID:s8yqv2t4 公式に呼びやすい名前をつけないのがよくない
question mark operatorじゃわかりにくいから
error propagating operatorかerror handling operatorで
question mark operatorじゃわかりにくいから
error propagating operatorかerror handling operatorで
521デフォルトの名無しさん
2019/10/23(水) 21:26:40.40ID:AT7YtDx+ ダサいかどうかとかどうでもよすぎる
性能、書きやすさ、読みやすさ、安全性がすべて
性能、書きやすさ、読みやすさ、安全性がすべて
522デフォルトの名無しさん
2019/10/23(水) 21:31:02.23ID:5Hzic27k 性能 境界チェックのせいでだいぶおそい
書きやすさ 地獄
読みやすさ 悪夢
安全性 噂ではあるらしい
?まみれになるぐらいだったらヌルポで落ちても変わらんやん
どうせ無理に回復とかしないほうがいい類のだろ
書きやすさ 地獄
読みやすさ 悪夢
安全性 噂ではあるらしい
?まみれになるぐらいだったらヌルポで落ちても変わらんやん
どうせ無理に回復とかしないほうがいい類のだろ
523デフォルトの名無しさん
2019/10/23(水) 22:05:27.50ID:B/jcGWye ぬるぽで落ちるのは運が良かっただけで何でも起きうるし最悪スーパーハカーの餌食になる
?はちゃんとエラーで終了してくれる
って理解でおk?
?はちゃんとエラーで終了してくれる
って理解でおk?
524デフォルトの名無しさん
2019/10/23(水) 22:31:31.88ID:xt74prfP ヌルポって、javaのあれのこと?
シンタックスだけ比較して意味あんのかな
シンタックスだけ比較して意味あんのかな
525デフォルトの名無しさん
2019/10/23(水) 23:02:51.06ID:5Hzic27k526デフォルトの名無しさん
2019/10/23(水) 23:10:47.86ID:5Hzic27k モナドだろうがなんだろうがNullはNullだ
へたに回復してしまうとほかに影響が波及して大惨事につながりやすい
むしろ最初からNullにならないことを保証してくれる方がうれしい
なのになんでOKで帰ってきた結果からfileNaeme取るのまで?つけさせられとんじゃ
へたに回復してしまうとほかに影響が波及して大惨事につながりやすい
むしろ最初からNullにならないことを保証してくれる方がうれしい
なのになんでOKで帰ってきた結果からfileNaeme取るのまで?つけさせられとんじゃ
527デフォルトの名無しさん
2019/10/24(木) 00:25:03.31ID:M5uvwdA8 まあNULLで潔く死んでくれた方がってのは確かにあるわな。
528デフォルトの名無しさん
2019/10/24(木) 00:39:21.69ID:1+d2lllL エラーかどうかのチェックは、NULLかどうかのチェックとは違う
ここ大事なところなので間違えちゃダメ
ここ大事なところなので間違えちゃダメ
529デフォルトの名無しさん
2019/10/24(木) 01:03:58.72ID:LM2wjPr+ 潔く死んで欲しいなら明示的にunwrapなりexceptなりすればよい
バグなのか想定されたエラーなのかを区別して明示的にコーディングできるのがrustの利点では
バグなのか想定されたエラーなのかを区別して明示的にコーディングできるのがrustの利点では
530デフォルトの名無しさん
2019/10/24(木) 05:35:47.09ID:nklp1qoa OptionとかResultにケチつけてるのは加齢臭キツすぎる
531デフォルトの名無しさん
2019/10/24(木) 06:50:04.06ID:G12eboer 下手に回復して大惨事になるのは、下手だからでしょ
file_nameに?付けてるのはディレクトリの場合無いからでしょ
なんでそんなことが疑問になるのか分からない
file_nameに?付けてるのはディレクトリの場合無いからでしょ
なんでそんなことが疑問になるのか分からない
532デフォルトの名無しさん
2019/10/24(木) 09:03:26.66ID:M5uvwdA8 Optionとか中途半端でたちわりーわ。
てかrustみたいにライフタイム意識する言語の場合、あんまり役割ない気がするけどね。
てかrustみたいにライフタイム意識する言語の場合、あんまり役割ない気がするけどね。
533デフォルトの名無しさん
2019/10/24(木) 12:28:38.87ID:8vd5prrh メソッドチェーンの中で「owned -> borrowed -> owned」するのはアンチパターンだと思うんだよね
不必要な処理が入るし可読性も下がるのでいいことない
fn main() -> Result<(), std::io::Error> {
let path = std::env::current_exe()?;
let file = path.file_name().unwrap();
println!("{:?}", file);
Ok(())
}
不必要な処理が入るし可読性も下がるのでいいことない
fn main() -> Result<(), std::io::Error> {
let path = std::env::current_exe()?;
let file = path.file_name().unwrap();
println!("{:?}", file);
Ok(())
}
534デフォルトの名無しさん
2019/10/24(木) 12:51:50.95ID:1+d2lllL そもそものお題がこちら
>187 デフォルトの名無しさん2019/08/26(月) 20:55:57.18 ID:hNXwMePN >>206>>214>>224
>https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8c44bed658726ada0deff031799664b7
>1. std::env::current_exe()で実行ファイルのフルパスを得る
>2. file_name()でファイル名だけにする
>3. to_str()で&strにする
>4. 途中でErrやNoneが返ってきた場合はデフォルトの値"foo"を使う
>
>ということをやりたいのですが、エラーでビルドできません。
>どのように書けばいいでしょうか?
>187 デフォルトの名無しさん2019/08/26(月) 20:55:57.18 ID:hNXwMePN >>206>>214>>224
>https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8c44bed658726ada0deff031799664b7
>1. std::env::current_exe()で実行ファイルのフルパスを得る
>2. file_name()でファイル名だけにする
>3. to_str()で&strにする
>4. 途中でErrやNoneが返ってきた場合はデフォルトの値"foo"を使う
>
>ということをやりたいのですが、エラーでビルドできません。
>どのように書けばいいでしょうか?
535デフォルトの名無しさん
2019/10/24(木) 20:32:12.47ID:8vd5prrh >>534
お題があったのね
referenceを受け取ってreferenceを返す関数に抽出すればto_ownedやto_stringは不要
use std::path::PathBuf;
fn main() {
let path = std::env::current_exe().ok();
let file = file_name(path.as_ref()).unwrap_or("foo");
println!("{}", file);
}
fn file_name(path: Option<&PathBuf>) -> Option<&str> {
path?.file_name()?.to_str()
}
お題があったのね
referenceを受け取ってreferenceを返す関数に抽出すればto_ownedやto_stringは不要
use std::path::PathBuf;
fn main() {
let path = std::env::current_exe().ok();
let file = file_name(path.as_ref()).unwrap_or("foo");
println!("{}", file);
}
fn file_name(path: Option<&PathBuf>) -> Option<&str> {
path?.file_name()?.to_str()
}
536デフォルトの名無しさん
2019/10/24(木) 21:22:39.45ID:1+d2lllL 勉強になりました
let file = {|| Some(path.as_ref()?.file_name()?.to_str()?)}()
.unwrap_or("foo");
でも動くようですけど関数に抽出した方が良いですか?
let file = {|| Some(path.as_ref()?.file_name()?.to_str()?)}()
.unwrap_or("foo");
でも動くようですけど関数に抽出した方が良いですか?
537デフォルトの名無しさん
2019/10/24(木) 21:41:02.37ID:7Zw0jZ/m それ関数作って呼んでるのとほぼ同じだし名前がついてるかどうかの違いだから好きにせえ
538デフォルトの名無しさん
2019/10/24(木) 21:55:47.24ID:8vd5prrh Someで囲ったOptionalチェーンを返すクロージャってのが
Rustのイディオムとして認知されて来ればそういうやり方も有りかもだけど
俺は関数に抽出したほうが型が見えて読みやすいので良いんじゃないかと思う
Rustのイディオムとして認知されて来ればそういうやり方も有りかもだけど
俺は関数に抽出したほうが型が見えて読みやすいので良いんじゃないかと思う
539デフォルトの名無しさん
2019/10/24(木) 22:25:03.94ID:LM2wjPr+ try blockを待て
540デフォルトの名無しさん
2019/10/25(金) 20:57:15.75ID:ZeSKDyBG これまではto_string()がチェーン末尾だったからSomeに入れてたけど
末尾がto_str()になってOption返すから必要なかった
let file = {|| path.as_ref()?.file_name()?.to_str()}().unwrap_or("foo");
なぜ昨日は気が付かなかったんだろう……
末尾がto_str()になってOption返すから必要なかった
let file = {|| path.as_ref()?.file_name()?.to_str()}().unwrap_or("foo");
なぜ昨日は気が付かなかったんだろう……
541デフォルトの名無しさん
2019/10/25(金) 21:01:12.42ID:d+xtEa5D try block
ずっと待ってるあなたのことを
意味もなくクロージャで囲む日々
ずっと待ってるあなたのことを
意味もなくクロージャで囲む日々
542デフォルトの名無しさん
2019/10/25(金) 21:29:24.66ID:JK+efETy モナド早くきてくれー
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 【無職の男(31)】女子小学生に次々触る 下半身を露出した状態で 公然わいせつ、不同意わいせつ疑い 千葉県警 [nita★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 【実況】博衣こよりのえちえち朝活🧪
- VIPでパズドラ
- 最寄りのラブホの店名を晒すスレ
- 朝からハイエースでカップラーメン食べてるドカタ
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- 冬季賞与報告スレ [577451214]
