公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part18
https://mevius.5ch.net/test/read.cgi/tech/1670663822/
探検
Rust part19
■ このスレッドは過去ログ倉庫に格納されています
2023/01/17(火) 12:41:32.25ID:nikBFIMQ
2023/01/17(火) 12:41:51.84ID:esjs4yiD
たておつ
2023/01/17(火) 14:00:56.91ID:MqwPrlrO
89 それでも動く名無し 2023/01/10(火) 23:26:51.53 ID:pA5+SQtP0
痴漢ものAVと違ってこういうガチ痴漢は臨場感が違うわ
抵抗されて上手く行かなかったり、たまに他の客にバレて逃走してるからな
マジで興奮する
https://i.imgur.com/My4nuB1.jpg
https://i.imgur.com/ttXkWGH.jpg
https://i.imgur.com/upphmaU.jpg
https://gcol;le.net/product_info.php/products_id/763929/ref/15062/affiliate_banner_id/1
520 名無しさん@ピンキー sage 2023/01/03(火) 21:36:57.85 ID:AS4vmq4R0
不朽の名作が復活していたので
https://i.imgur.com/SGsDTp5.jpg
https://i.imgur.com/4R20ojB.jpg
https://gcol;le.net/product_info.php/products_id/863650/ref/15062/affiliate_banner_id/1
痴漢ものAVと違ってこういうガチ痴漢は臨場感が違うわ
抵抗されて上手く行かなかったり、たまに他の客にバレて逃走してるからな
マジで興奮する
https://i.imgur.com/My4nuB1.jpg
https://i.imgur.com/ttXkWGH.jpg
https://i.imgur.com/upphmaU.jpg
https://gcol;le.net/product_info.php/products_id/763929/ref/15062/affiliate_banner_id/1
520 名無しさん@ピンキー sage 2023/01/03(火) 21:36:57.85 ID:AS4vmq4R0
不朽の名作が復活していたので
https://i.imgur.com/SGsDTp5.jpg
https://i.imgur.com/4R20ojB.jpg
https://gcol;le.net/product_info.php/products_id/863650/ref/15062/affiliate_banner_id/1
2023/01/17(火) 14:01:08.20ID:MqwPrlrO
すみません、誤爆しました
2023/01/17(火) 14:04:39.15ID:QD1aLS8A
. :::';;;;: . . ..,,,;;:
. . :;;;;;:.:;;,, ..:.;;;;.:
:;;''' .:';;; . . .:.:;;;;;':. . . .,,,,;,,...,,
.:;;;' : .:;;;;; .: ,,,;;;,,, , .:;;;';;''' ''';;;;,,
. :.;;;;' . .: ;;;;;;;;'''' ';;;:.:.. ,;: . . ''''''"
';;:;' ''''; .:.';;;;,,;;.
''' ,.:.:';;;;,,,,
,、—-、 .;.';:;.:.: ;;;;;;:.;.;...
-、_ (_二ニ=っ,、;;;:.:;.:;...:.:...'''''''''''
`‐-、_ ( ´∀)f、 `''、:..:.:. .:
`-,ノ つ; /
(〇 〈-`'"
(_,ゝ ) `‐-、_
(__) `'‐-、,_..
`‐-、._
. . :;;;;;:.:;;,, ..:.;;;;.:
:;;''' .:';;; . . .:.:;;;;;':. . . .,,,,;,,...,,
.:;;;' : .:;;;;; .: ,,,;;;,,, , .:;;;';;''' ''';;;;,,
. :.;;;;' . .: ;;;;;;;;'''' ';;;:.:.. ,;: . . ''''''"
';;:;' ''''; .:.';;;;,,;;.
''' ,.:.:';;;;,,,,
,、—-、 .;.';:;.:.: ;;;;;;:.;.;...
-、_ (_二ニ=っ,、;;;:.:;.:;...:.:...'''''''''''
`‐-、_ ( ´∀)f、 `''、:..:.:. .:
`-,ノ つ; /
(〇 〈-`'"
(_,ゝ ) `‐-、_
(__) `'‐-、,_..
`‐-、._
2023/01/17(火) 14:25:12.33ID:IvlgRnTP
ここが新しいおちんぽスレと聞いて
7デフォルトの名無しさん
2023/01/17(火) 14:31:29.73ID:AjT+2M0N 最低だな
犯罪者予備軍やん
犯罪者予備軍やん
2023/01/17(火) 16:35:46.70ID:+0g0VEsU
通報しといたよ
2023/01/17(火) 16:41:04.96ID:mmIRzxLT
はよ立て直せ
2023/01/18(水) 10:59:16.69ID:j7LzfbP6
2023/01/18(水) 12:30:23.66ID:NvrWVfIW
おちんぽまんまんスレ違いと聞いて
2023/01/18(水) 20:15:50.70ID:CRD98AUE
ResultがErrの時だけブロックを実行するifってどうやって書けばいいの?
if Err(_) = fs::read_to_string("foo.txt") { err() }
は通らないようだが
if Err(_) = fs::read_to_string("foo.txt") { err() }
は通らないようだが
2023/01/18(水) 20:29:34.91ID:vXgVoSzN
if let Err(_)
2023/01/18(水) 20:41:58.72ID:CRD98AUE
>>13
サンキュー。行けた
サンキュー。行けた
2023/01/19(木) 04:27:00.05ID:UpsgRjC+
2023/01/19(木) 07:51:52.20ID:kHXiKnOP
>>15
それが少し前に入ってみんな喜んでた let else だね。
let Ok(value) = result else { return };
/* Ok のときやりたい処理 */
みたいにエラーは早期リターンして、正常系をインデント下げて書くみたいなことができる。
俺は Err は anyhow で呼び出し側に返しちゃう事が多いから正直あまり使わないけど。
それが少し前に入ってみんな喜んでた let else だね。
let Ok(value) = result else { return };
/* Ok のときやりたい処理 */
みたいにエラーは早期リターンして、正常系をインデント下げて書くみたいなことができる。
俺は Err は anyhow で呼び出し側に返しちゃう事が多いから正直あまり使わないけど。
17デフォルトの名無しさん
2023/01/19(木) 10:36:41.67ID:pws6L0p3 Option/Result系は?演算子で素直に返すしそれ以外でもResultを返す関数に切り出して呼び出し側で?演算子にするからlet-elseは使い所がよく分からん
2023/01/19(木) 11:05:24.00ID:MVgEnHGb
>>15
そもそもreturnしない。err()の中身はエラーメッセージを出力後にパニックさせるので一方通行
そもそもreturnしない。err()の中身はエラーメッセージを出力後にパニックさせるので一方通行
19デフォルトの名無しさん
2023/01/19(木) 13:52:46.10ID:i8wJP128 expectじゃだめなのかな?
もう少しちゃんとしたロギングをしたいならlog crate使ってlog_expectみたいな形でunwrap
もう少しちゃんとしたロギングをしたいならlog crate使ってlog_expectみたいな形でunwrap
20デフォルトの名無しさん
2023/01/19(木) 14:21:48.46ID:plizw9iy 自分で書いといてあれだからやっばりexpect使うケースじゃないな
panicさせるよりもErrのまま最上位まで返してそこでログ出力含めてハンドリング
panicさせるよりもErrのまま最上位まで返してそこでログ出力含めてハンドリング
2023/01/19(木) 18:44:58.53ID:kHXiKnOP
expectってライブラリの動作確認とかサンプルコードとか、トップレベルで雑なことしたいとき以外使わなくない?
深めの階層で見かけたら身構えちゃいそう。
深めの階層で見かけたら身構えちゃいそう。
2023/01/19(木) 19:25:25.54ID:UlqzrrZi
論理的に安全にunwrapできるってわかってる箇所には使うかな
もしパニックになるならそもそも致命的な論理バグがあるってことになるから
変にエラー処理するより早期に落とした方がいいってケース
もしパニックになるならそもそも致命的な論理バグがあるってことになるから
変にエラー処理するより早期に落とした方がいいってケース
2023/01/19(木) 20:03:32.07ID:KyLvYp+m
横からですまんが安全なら unwrap() でよくない?
expect() にする理由ってなんだろう
expect() にする理由ってなんだろう
2023/01/19(木) 20:30:48.24ID:UlqzrrZi
個人的には Regex::new(r"").unwrap() みたいに自明ならunwrap
安全にunwrapできる理由を書きたいならコメントに書くよりexpectに書くかな
安全にunwrapできる理由を書きたいならコメントに書くよりexpectに書くかな
2023/01/19(木) 20:45:59.09ID:kHXiKnOP
なるほどね。自明な時に unwrap したいけど、仮に起きたときに原因調査しやすいよう expect というのは納得できる。
2023/01/19(木) 20:51:26.80ID:kHXiKnOP
あ、違うか。unwrapできる理由を書くわけか。
paniced at 'ここでは 0 は渡ってこないので自信を持って除算する'
みたいな出力になるから割と恥ずかしいな。
paniced at 'ここでは 0 は渡ってこないので自信を持って除算する'
みたいな出力になるから割と恥ずかしいな。
2023/01/19(木) 21:03:13.60ID:KyLvYp+m
28はちみつ餃子 ◆8X2XSCHEME
2023/01/19(木) 22:24:19.09ID:uAmZfzQm >>27
自分意外が使う前提のときのほうが except が必要だと思う。
外部から与えられる情報が仕様外の場合 (事前条件が満たされない場合) など
使い方が誤っているときに起こりえるなら except で説明があったほうがいいんじゃない?
内部的なロジック的に起こりえないと確信しているところは unwrap でいいと思う。
間違いがあったときに panic! してくれることには変わりないしバックトレースも出せるんで、
特に必要だと思う箇所だけ説明を付けておけば十分でしょ。
自分意外が使う前提のときのほうが except が必要だと思う。
外部から与えられる情報が仕様外の場合 (事前条件が満たされない場合) など
使い方が誤っているときに起こりえるなら except で説明があったほうがいいんじゃない?
内部的なロジック的に起こりえないと確信しているところは unwrap でいいと思う。
間違いがあったときに panic! してくれることには変わりないしバックトレースも出せるんで、
特に必要だと思う箇所だけ説明を付けておけば十分でしょ。
2023/01/19(木) 22:58:51.51ID:TbDEskmg
2023/01/20(金) 00:14:17.87ID:+VmzUJ32
Optionを返す関数が2つ(以上)あり、
Someを得られるまで遅延評価で順に試す場合に、
func1(arg)
.or_else(|| func2(arg))
と非対称で手間なのを改善する方法ありますか?
例えば func1(arg) || func2(arg) と書けると便利だと思いました
Someを得られるまで遅延評価で順に試す場合に、
func1(arg)
.or_else(|| func2(arg))
と非対称で手間なのを改善する方法ありますか?
例えば func1(arg) || func2(arg) と書けると便利だと思いました
2023/01/20(金) 00:47:21.47ID:sbzTb5wM
イテレータ化してchain()で繋げるとか?
でも手間は変わらないか
でも手間は変わらないか
32デフォルトの名無しさん
2023/01/20(金) 02:52:18.79ID:rWEP7xyW2023/01/20(金) 11:05:21.77ID:cF/QvtGv
2023/01/20(金) 13:36:20.52ID:pmLm7hT0
ちんちん!シュッ!シュッ!!シュッ!!!
35デフォルトの名無しさん
2023/01/20(金) 21:59:08.95ID:A12k25he2023/01/21(土) 14:16:15.90ID:tEFzN85r
1.すべてmainまで返してmainでエラー処理をする
2.エラー処理用の関数を作ってそれを呼び出す
3.パニックハンドラでエラーメッセージを出力
くらいしか思いつかん。ググってもThe Bookに書いてある程度のことしか出てこなくて参考にならない
3はpanic!やexpectで脱出できるのは楽だけどハンドラへ渡せるデータが文字列のみでなのがいまいち
またエラー処理に必要な情報を文字列にエンコードする必要がある
2ならmainまで戻らずともエラー処理できるのでこの方向で実装中
2.エラー処理用の関数を作ってそれを呼び出す
3.パニックハンドラでエラーメッセージを出力
くらいしか思いつかん。ググってもThe Bookに書いてある程度のことしか出てこなくて参考にならない
3はpanic!やexpectで脱出できるのは楽だけどハンドラへ渡せるデータが文字列のみでなのがいまいち
またエラー処理に必要な情報を文字列にエンコードする必要がある
2ならmainまで戻らずともエラー処理できるのでこの方向で実装中
37デフォルトの名無しさん
2023/01/21(土) 14:57:31.49ID:hb5eMxVX log crateやtrace crateはチェック済み?
logは準標準、実装は好きなのを選ぶ必要がある
traceはtokio-rs製
logは準標準、実装は好きなのを選ぶ必要がある
traceはtokio-rs製
2023/01/21(土) 16:41:16.71ID:3Tq4pZe4
2023/01/21(土) 18:30:23.18ID:/bIQjlWu
>>37
info!やerror!ってpanic!やexpectと本質的に変わらないような。いずれにしろ呼び出し側で文字列の加工が必要
GUIへの対応方法もよくわからない。開発時はもちろんコンソールへの出力を使うけど
運用中のエラー出力はGUIのポップアップメッセージがメインになるし
あとソースコードは600行弱くらいだけどリリースビルドで生成されるバイナリは800KB弱もあるんで
これ以上でかくしたくないというのもある
info!やerror!ってpanic!やexpectと本質的に変わらないような。いずれにしろ呼び出し側で文字列の加工が必要
GUIへの対応方法もよくわからない。開発時はもちろんコンソールへの出力を使うけど
運用中のエラー出力はGUIのポップアップメッセージがメインになるし
あとソースコードは600行弱くらいだけどリリースビルドで生成されるバイナリは800KB弱もあるんで
これ以上でかくしたくないというのもある
40デフォルトの名無しさん
2023/01/21(土) 22:40:10.67ID:wag66I/R ロガーを設定/生成するコード
ロガーを使うコード
ロガー自体のコード
それぞれ分けて考える
ロガーを使うコードではファイル出力だろうが標準出力だろうがinfo!やerror!でコードを変える必要はない
使うロガーを変えたり設定を変えたりする
ロギングライブラリを使うのは自前で作るのは面倒だから
ロガーを使うコード
ロガー自体のコード
それぞれ分けて考える
ロガーを使うコードではファイル出力だろうが標準出力だろうがinfo!やerror!でコードを変える必要はない
使うロガーを変えたり設定を変えたりする
ロギングライブラリを使うのは自前で作るのは面倒だから
41デフォルトの名無しさん
2023/01/22(日) 02:33:12.00ID:5IaN6zUW 書籍で最初に読むとしたら
平家蟹の方?
それとも可愛い方?
平家蟹の方?
それとも可愛い方?
2023/01/22(日) 02:45:54.00ID:DAK16wxY
平家蟹がかわいくないとか、こいつアンチか?
43デフォルトの名無しさん
2023/01/22(日) 02:46:40.77ID:4BdfAMug2023/01/22(日) 12:43:00.06ID:WLCvNrGP
>>39
ログはログ。何が起きたか記録するだけ。ログレベルが何であれ副作用は起こさない。
エラーはエラー。発生したときにどうハンドリングするかはプログラムの性質で決める。
パニックはそのまま稼働したらまずい状況に陥ったら時だけ起こす。
ログはログ。何が起きたか記録するだけ。ログレベルが何であれ副作用は起こさない。
エラーはエラー。発生したときにどうハンドリングするかはプログラムの性質で決める。
パニックはそのまま稼働したらまずい状況に陥ったら時だけ起こす。
45デフォルトの名無しさん
2023/01/22(日) 14:52:04.22ID:RMpOCJx1 >>41
モンタギュー蟹の方
モンタギュー蟹の方
46デフォルトの名無しさん
2023/01/22(日) 15:29:33.81ID:WCVJRVcD アプリケーションのレイヤーでパニック起こすのはバグの時だけ
2023/01/25(水) 16:19:44.22ID:zlgPT3s2
ネットワーク前提にしてる時に、panicになるのはバグではないよ?
2023/01/25(水) 16:35:00.31ID:LG3Fy/yw
うっわすっげー読みやすいコードと思ってよく見てみたら
過去に自分が書いたやつだった(´・ω・`)
過去に自分が書いたやつだった(´・ω・`)
2023/01/25(水) 16:39:27.19ID:5onhVltK
天才か?
2023/01/25(水) 16:40:49.73ID:GSIKYco3
過去の自分は他人だと思え、がプログラミングの基本
2023/01/25(水) 17:17:39.71ID:xORIlv/9
過去のことを忘れていても過去の自分が考えることは今の自分が考えることとあまり差がない。
名前の付け方とかは何度考えても同じような状況なら同じ名前を付けるし。
書くときに想定する読み手が全くの他人のときと未来の自分のときではちょっと違う意識があるな。
名前の付け方とかは何度考えても同じような状況なら同じ名前を付けるし。
書くときに想定する読み手が全くの他人のときと未来の自分のときではちょっと違う意識があるな。
2023/01/25(水) 18:36:03.64ID:V9gmFqbx
一度も使ったことがない機能は書くことはできても読めると思うな、が基本
使ってから読め
使ってから読め
2023/01/25(水) 19:53:08.97ID:sck5kayB
>>47
ネットワークこそ途中で途切れること前提に書かないといけない機能の最たるものだろ。エラー返してハンドリングしろ。
ネットワークこそ途中で途切れること前提に書かないといけない機能の最たるものだろ。エラー返してハンドリングしろ。
54デフォルトの名無しさん
2023/01/25(水) 20:37:11.28ID:5EKz9Dxo >>48
あるあるだね
あるあるだね
55デフォルトの名無しさん
2023/01/25(水) 20:38:19.94ID:xtWPaGBn >>47
なんでpanicになるの?
なんでpanicになるの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国 東アジアの海域に過去最大規模 100隻超の艦船を展開 高市総理の発言に反発か [Hitzeschleier★]
- 【独自】渡邊渚さんを脅迫の疑いで32歳女を書類送検 警視庁 渡邊さんの写真集に包丁置いた写真を投稿 [ひかり★]
- “信号待ち”中国人観光客2人死亡の山陽電鉄踏切事故 遺族が約1億4000万円賠償求め提訴 神戸地裁 [七波羅探題★]
- 【速報】山本由伸のWBC欠場決定! [牛丼★]
- 「さようなら日本。帰国します」経営ビザで中国系「ペーパー会社」大阪で乱立、移民ビジネスの仕組み…500社超で取締役の日本側協力者も [ぐれ★]
- 米国、ホワイトカラーよりブルーカラーが重視される社会になってしまう、AIの影響で25年大卒者は就職難に直面 [お断り★]
- 高市のせいで中国の戦艦100隻が東アジア海に展開。これは「存立危機事態」では? [289765331]
- 【悲報】高市「G7に中国呼ぶのやめろ!!!」 [834922174]
- ごめん高市早苗でインフレ加速するけど株や不動産持ってるよな? [695089791]
- 【悲報】小学校2年生「パパこの算数の問題わかる?」→難しくて炎上wwwwwwwwwwwwwwwwwwww [802034645]
- 11インチタブレットが16999円。迷わず買え。ラストチャンスだ。 [422186189]
- 長期国債の金利、一時1.95%。日本、終わったな [805596214]
