[過去ログ] Rust part19 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(1): 2023/01/17(火)12:41 ID:nikBFIMQ(1) AAS
公式
外部リンク:www.rust-lang.org
外部リンク:blog.rust-lang.org
外部リンク:github.com
公式ドキュメント
外部リンク:www.rust-lang.org
Web上の実行環境
省11
2: 2023/01/17(火)12:41 ID:esjs4yiD(1) AAS
たておつ
3: 2023/01/17(火)14:00 ID:MqwPrlrO(1/2) AAS
89 それでも動く名無し 2023/01/10(火) 23:26:51.53 ID:pA5+SQtP0
痴漢ものAVと違ってこういうガチ痴漢は臨場感が違うわ
抵抗されて上手く行かなかったり、たまに他の客にバレて逃走してるからな
マジで興奮する
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
省6
4: 2023/01/17(火)14:01 ID:MqwPrlrO(2/2) AAS
すみません、誤爆しました
5: 2023/01/17(火)14:04 ID:QD1aLS8A(1) AAS
AA省
6: 2023/01/17(火)14:25 ID:IvlgRnTP(1) AAS
ここが新しいおちんぽスレと聞いて
7: 2023/01/17(火)14:31 ID:AjT+2M0N(1) AAS
最低だな
犯罪者予備軍やん
8: 2023/01/17(火)16:35 ID:+0g0VEsU(1) AAS
通報しといたよ
9: 2023/01/17(火)16:41 ID:mmIRzxLT(1) AAS
はよ立て直せ
10: 2023/01/18(水)10:59 ID:j7LzfbP6(1) AAS
ワッチョイ有効スレ
2chスレ:tech
11: 2023/01/18(水)12:30 ID:NvrWVfIW(1) AAS
おちんぽまんまんスレ違いと聞いて
12(1): 2023/01/18(水)20:15 ID:CRD98AUE(1/2) AAS
ResultがErrの時だけブロックを実行するifってどうやって書けばいいの?
if Err(_) = fs::read_to_string("foo.txt") { err() }
は通らないようだが
13(1): 2023/01/18(水)20:29 ID:vXgVoSzN(1) AAS
if let Err(_)
14: 2023/01/18(水)20:41 ID:CRD98AUE(2/2) AAS
>>13
サンキュー。行けた
15(2): 2023/01/19(木)04:27 ID:UpsgRjC+(1) AAS
>>12
エラーが起きた時は先に判断してreturnして
そうでなく正常値が得られた時はlet代入してインデントを下げずに書けないかな?
16: 2023/01/19(木)07:51 ID:kHXiKnOP(1/4) AAS
>>15
それが少し前に入ってみんな喜んでた let else だね。
let Ok(value) = result else { return };
/* Ok のときやりたい処理 */
みたいにエラーは早期リターンして、正常系をインデント下げて書くみたいなことができる。
俺は Err は anyhow で呼び出し側に返しちゃう事が多いから正直あまり使わないけど。
17: 2023/01/19(木)10:36 ID:pws6L0p3(1) AAS
Option/Result系は?演算子で素直に返すしそれ以外でもResultを返す関数に切り出して呼び出し側で?演算子にするからlet-elseは使い所がよく分からん
18: 2023/01/19(木)11:05 ID:MVgEnHGb(1) AAS
>>15
そもそもreturnしない。err()の中身はエラーメッセージを出力後にパニックさせるので一方通行
19: 2023/01/19(木)13:52 ID:i8wJP128(1) AAS
expectじゃだめなのかな?
もう少しちゃんとしたロギングをしたいならlog crate使ってlog_expectみたいな形でunwrap
20(1): 2023/01/19(木)14:21 ID:plizw9iy(1) AAS
自分で書いといてあれだからやっばりexpect使うケースじゃないな
panicさせるよりもErrのまま最上位まで返してそこでログ出力含めてハンドリング
21: 2023/01/19(木)18:44 ID:kHXiKnOP(2/4) AAS
expectってライブラリの動作確認とかサンプルコードとか、トップレベルで雑なことしたいとき以外使わなくない?
深めの階層で見かけたら身構えちゃいそう。
22: 2023/01/19(木)19:25 ID:UlqzrrZi(1/2) AAS
論理的に安全にunwrapできるってわかってる箇所には使うかな
もしパニックになるならそもそも致命的な論理バグがあるってことになるから
変にエラー処理するより早期に落とした方がいいってケース
23: 2023/01/19(木)20:03 ID:KyLvYp+m(1/2) AAS
横からですまんが安全なら unwrap() でよくない?
expect() にする理由ってなんだろう
24: 2023/01/19(木)20:30 ID:UlqzrrZi(2/2) AAS
個人的には Regex::new(r"").unwrap() みたいに自明ならunwrap
安全にunwrapできる理由を書きたいならコメントに書くよりexpectに書くかな
25: 2023/01/19(木)20:45 ID:kHXiKnOP(3/4) AAS
なるほどね。自明な時に unwrap したいけど、仮に起きたときに原因調査しやすいよう expect というのは納得できる。
26(2): 2023/01/19(木)20:51 ID:kHXiKnOP(4/4) AAS
あ、違うか。unwrapできる理由を書くわけか。
paniced at 'ここでは 0 は渡ってこないので自信を持って除算する'
みたいな出力になるから割と恥ずかしいな。
27(1): 2023/01/19(木)21:03 ID:KyLvYp+m(2/2) AAS
>>26
これは俺も思ったw
まぁ自分しか使わないライブラリとかならいいかもね
28: はちみつ餃子 ◆8X2XSCHEME 2023/01/19(木)22:24 ID:uAmZfzQm(1) AAS
>>27
自分意外が使う前提のときのほうが except が必要だと思う。
外部から与えられる情報が仕様外の場合 (事前条件が満たされない場合) など
使い方が誤っているときに起こりえるなら except で説明があったほうがいいんじゃない?
内部的なロジック的に起こりえないと確信しているところは unwrap でいいと思う。
間違いがあったときに panic! してくれることには変わりないしバックトレースも出せるんで、
特に必要だと思う箇所だけ説明を付けておけば十分でしょ。
29: 2023/01/19(木)22:58 ID:TbDEskmg(1) AAS
>>26
関係ないけどpanicに-ed、-ingつけるとkが差し込まれてpanicked、panickingになる
自分もRust触るまで知らなかった
30(1): 2023/01/20(金)00:14 ID:+VmzUJ32(1) AAS
Optionを返す関数が2つ(以上)あり、
Someを得られるまで遅延評価で順に試す場合に、
func1(arg)
.or_else(|| func2(arg))
と非対称で手間なのを改善する方法ありますか?
例えば func1(arg) || func2(arg) と書けると便利だと思いました
31: 2023/01/20(金)00:47 ID:sbzTb5wM(1) AAS
イテレータ化してchain()で繋げるとか?
でも手間は変わらないか
32(1): 2023/01/20(金)02:52 ID:rWEP7xyW(1) AAS
>>30
ないんじゃね
何回も書く必要があるなら単に関数化する
||演算子で書きたければマクロ内独自文法作る
33(1): 2023/01/20(金)11:05 ID:cF/QvtGv(1) AAS
>>20
今だいたいそうなっていてmainにエラー出力用のコードが散在している状態
エラーメッセージの出力先もコンソールのみじゃないのでexpectだと難しい気が
34: 2023/01/20(金)13:36 ID:pmLm7hT0(1) AAS
ちんちん!シュッ!シュッ!!シュッ!!!
35: 2023/01/20(金)21:59 ID:A12k25he(1) AAS
>>33
いろんな問題をごちゃ混ぜにしすぎ
頭とコードを整理しよう
36: 2023/01/21(土)14:16 ID:tEFzN85r(1) AAS
1.すべてmainまで返してmainでエラー処理をする
2.エラー処理用の関数を作ってそれを呼び出す
3.パニックハンドラでエラーメッセージを出力
くらいしか思いつかん。ググってもThe Bookに書いてある程度のことしか出てこなくて参考にならない
3はpanic!やexpectで脱出できるのは楽だけどハンドラへ渡せるデータが文字列のみでなのがいまいち
またエラー処理に必要な情報を文字列にエンコードする必要がある
2ならmainまで戻らずともエラー処理できるのでこの方向で実装中
37(1): 2023/01/21(土)14:57 ID:hb5eMxVX(1) AAS
log crateやtrace crateはチェック済み?
logは準標準、実装は好きなのを選ぶ必要がある
traceはtokio-rs製
38(1): 2023/01/21(土)16:41 ID:3Tq4pZe4(1) AAS
>>32
|オペレータのstd::ops::BitOrトレイトのように
||オペレータのトレイトをRustコンパイラが用意してくれたらOptionも||で扱えそう
39(3): 2023/01/21(土)18:30 ID:/bIQjlWu(1) AAS
>>37
info!やerror!ってpanic!やexpectと本質的に変わらないような。いずれにしろ呼び出し側で文字列の加工が必要
GUIへの対応方法もよくわからない。開発時はもちろんコンソールへの出力を使うけど
運用中のエラー出力はGUIのポップアップメッセージがメインになるし
あとソースコードは600行弱くらいだけどリリースビルドで生成されるバイナリは800KB弱もあるんで
これ以上でかくしたくないというのもある
40: 2023/01/21(土)22:40 ID:wag66I/R(1) AAS
ロガーを設定/生成するコード
ロガーを使うコード
ロガー自体のコード
それぞれ分けて考える
ロガーを使うコードではファイル出力だろうが標準出力だろうがinfo!やerror!でコードを変える必要はない
使うロガーを変えたり設定を変えたりする
ロギングライブラリを使うのは自前で作るのは面倒だから
41(1): 2023/01/22(日)02:33 ID:5IaN6zUW(1) AAS
書籍で最初に読むとしたら
平家蟹の方?
それとも可愛い方?
42: 2023/01/22(日)02:45 ID:DAK16wxY(1) AAS
平家蟹がかわいくないとか、こいつアンチか?
43: 2023/01/22(日)02:46 ID:4BdfAMug(1) AAS
>>39
>GUIへの対応方法もよくわからない。
GUIのレイヤーまでResultを戻してErrならエラー表示をするだけ
44: 2023/01/22(日)12:43 ID:WLCvNrGP(1) AAS
>>39
ログはログ。何が起きたか記録するだけ。ログレベルが何であれ副作用は起こさない。
エラーはエラー。発生したときにどうハンドリングするかはプログラムの性質で決める。
パニックはそのまま稼働したらまずい状況に陥ったら時だけ起こす。
45: 2023/01/22(日)14:52 ID:RMpOCJx1(1) AAS
>>41
モンタギュー蟹の方
46: 2023/01/22(日)15:29 ID:WCVJRVcD(1) AAS
アプリケーションのレイヤーでパニック起こすのはバグの時だけ
47(3): 2023/01/25(水)16:19 ID:zlgPT3s2(1) AAS
ネットワーク前提にしてる時に、panicになるのはバグではないよ?
48(1): 2023/01/25(水)16:35 ID:LG3Fy/yw(1) AAS
うっわすっげー読みやすいコードと思ってよく見てみたら
過去に自分が書いたやつだった(´・ω・`)
49: 2023/01/25(水)16:39 ID:5onhVltK(1) AAS
天才か?
50: 2023/01/25(水)16:40 ID:GSIKYco3(1) AAS
過去の自分は他人だと思え、がプログラミングの基本
51: 2023/01/25(水)17:17 ID:xORIlv/9(1) AAS
過去のことを忘れていても過去の自分が考えることは今の自分が考えることとあまり差がない。
名前の付け方とかは何度考えても同じような状況なら同じ名前を付けるし。
書くときに想定する読み手が全くの他人のときと未来の自分のときではちょっと違う意識があるな。
52: 2023/01/25(水)18:36 ID:V9gmFqbx(1) AAS
一度も使ったことがない機能は書くことはできても読めると思うな、が基本
使ってから読め
53(1): 2023/01/25(水)19:53 ID:sck5kayB(1) AAS
>>47
ネットワークこそ途中で途切れること前提に書かないといけない機能の最たるものだろ。エラー返してハンドリングしろ。
54: 2023/01/25(水)20:37 ID:5EKz9Dxo(1) AAS
>>48
あるあるだね
55: 2023/01/25(水)20:38 ID:xtWPaGBn(1) AAS
>>47
なんでpanicになるの?
56(1): 2023/01/25(水)21:43 ID:jK9fbSTx(1) AAS
>>38
一度ポシャってるけど実装される可能性はあると思う
外部リンク:github.com
57: 2023/01/25(水)23:55 ID:7h2BZmgN(1) AAS
bool以外でも&&と||の遅延評価が使えるようになるわけか
欲しいね
58(1): 2023/01/26(木)00:47 ID:Oik+f0Gv(1) AAS
bool以外でもifを使えるといえばif letで
elseを省略することで3項ではなく2項演算のようになるのも&&と同じ
だがelseを省略できても{}を省略できなければ意味がない
59: 2023/01/26(木)11:05 ID:G0iCERKY(1) AAS
>>58
もうちょっと基礎を勉強してからレスしろ
60(5): 2023/01/26(木)11:09 ID:QY5r5/0E(1) AAS
すまんが、これの解答はmutをつけろっていうことなのはわかるけどさ
外部リンク[rs]:github.com
なんで8行目で所有権を失って9行目で代入できなくなったりしないの・・・・?
61: 2023/01/26(木)11:24 ID:DDvWU5a2(1) AAS
>>60
これはもっともな疑問
The Bookのどこかに書いてたように思うけど
ざっくり言えばprintlnはreferenceを取るから所有権は移動しない
DisplayトレイトやDebugトレイトのメソッドシグニチャを見ると分かる
62: 2023/01/26(木)11:33 ID:Y60o/Mze(1) AAS
>>60
ついこないだ Teratail で同じような質問を見たぞ。
マクロは構文糖を作り出す仕組みなので展開形によっては所有権を取ることも借用なことも何にも使いすらしないということもある。
63(2): 2023/01/26(木)14:03 ID:YuUaXpq9(1/2) AAS
ある関数の&mut T型の引数として、T型の変数を貸すのは分かるけど
&mut T型の変数を又貸しするのが不思議
なぜmoveしたことにならないのか
64: 2023/01/26(木)15:25 ID:MCrVnhV0(1) AAS
>>63
&TはCopyだからmoveしないよ
65: 2023/01/26(木)15:35 ID:SkvAt80a(1) AAS
>>63
implicit reborrowのことかな?
&mut Tの又貸しと言ってるのがどういうケースなのかはコードかないハッキリはわからないな
66: 2023/01/26(木)17:21 ID:YuUaXpq9(2/2) AAS
implicitly reborrowedされるとhogeが&mut *hogeになるのか
勉強になった
ありがとう
67: 2023/01/26(木)18:45 ID:nglgEIPC(1/2) AAS
結局&mutを持っている間は専有しているから既存ルールに抵触することなく貸し出し自由自在という理解でいいのかな
&*でimmutableなreborrowも出来ちゃうもんね
68(1): 2023/01/26(木)19:48 ID:16g2h/GU(1) AAS
>>60
変数が値を所有しているんだよ
値がムーブされて一度無効化された変数にも新しい値を所有させられるよ
例えば、その9行目でxが3を所有していなかったとしても新しい値を入れられるよ
外部リンク:play.rust-lang.org
69(1): 2023/01/26(木)19:50 ID:uBPDOaY+(1) AAS
暗黙で参照が外されることがあるからわかりにくいんだろうな
最初から暗黙の参照外しがなければよかったと思うが
後方互換性を大事にするなら、もう改善は不可能だな
70(2): 2023/01/26(木)20:31 ID:q1WzF/2m(1) AAS
>>53
だからバグじゃないよね?
71: 2023/01/26(木)21:11 ID:BacNCpeu(1) AAS
>>70
エラーを返すんだからpanicしないだろ
72: 2023/01/26(木)21:14 ID:GObOayQz(1) AAS
>>68
そりゃmutならなw
73: 2023/01/26(木)21:18 ID:q8T2WGhT(1) AAS
implicit reborrowはThe Bookには書かれないし直感的でもないから動きが理解しにくいというのはよく分かる
74(1): 2023/01/26(木)21:50 ID:ZxPs9rBQ(1) AAS
>>70
例えばtwitterアプリを地下鉄とか通信できない状況で起動して panic で落ちる事を考えてみろ。そりゃバグだろ。
75: 2023/01/26(木)22:06 ID:HEA6MC1t(1) AAS
Deref無しは流石にきついな
一気にRust書きたくなくなる気がする
76: 2023/01/26(木)22:20 ID:nglgEIPC(2/2) AAS
>>69
むしろderef含めたcoercionのおかげでRustは便利かつ読みやすいと思う
初心者の最初のうちだけは混乱するかもしれないけどそのデメリットを誤差にするほどの絶大なメリットがある
77(1): 60 2023/01/27(金)11:24 ID:CSClNfzp(1/2) AAS
教えてくれてるのは本当にありがたいんですが、訳がわかんないぽ・・・・
78: 2023/01/27(金)11:51 ID:YDsF+xqw(1) AAS
>>77
何がわからないのか書いて
79: 60 2023/01/27(金)13:58 ID:CSClNfzp(2/2) AAS
マクロが展開するコードがあって、そこに&がついてるってことなんですか?
80: 2023/01/27(金)14:00 ID:MqPTrKVr(1) AAS
せやで
Playgroundの左上のボタンでShow HIRするとマクロ展開等終わった後のコード出るから見てみ
81: 2023/01/27(金)19:13 ID:q2LYouLt(1) AAS
&はついてるけどあなたの疑問とは関係ないと思う
上下前次1-新書関写板覧索設栞歴
あと 921 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s