24/02/23 17:35:21.56 CheDQupm.net
>>977
traitとは機能を抽象化した抽象型だから使いたい機能のtraitを選ぶか作ればよい
structなどの具象型は各々必要な各機能(trait)を実装しているもしくは実装すればよい
そして抽象型(trait)を用いてプログラミングすることでその機能を実装する全ての具象型を対象とした共通コードにできる
994:デフォルトの名無しさん
24/02/23 17:38:39.47 CheDQupm.net
次スレ
Rust part23
スレリンク(tech板)
995:デフォルトの名無しさん
24/02/23 17:45:54.27 kgcjkDLJ.net
>>983
ありがとう
996:デフォルトの名無しさん
24/02/23 17:51:32.20 jYYzpIEX.net
>>978
こういうのをまとめようとはしているよ
URLリンク(smallcultfollowing.com)
997:デフォルトの名無しさん
24/02/23 20:10:18.94 1IK2X2kO.net
>>982
FromとかAsRefとかDerefとかの時点でもうようわからんぜ
998:デフォルトの名無しさん
24/02/23 22:42:10.08 oukljDwS.net
Fromは汎用的な変換だよ
変換に失敗する可能性を含む時はTryFromを使う
AsRefは参照から(別型の)参照への読み替え変換
コストがかからない場合が対象
コストがかかるものはFromを使う
Derefは変換ではなく演算子
変換は複数の型への変換を実装できるけど
演算子なので各型で決められた一つの型へderefできる
&T→T
Box<T>→T
Rc<T>→T
Vec<T>→[T]
String→str
PathBuf→Path
など
999:デフォルトの名無しさん
24/02/23 23:50:59.87 1IK2X2kO.net
あー。それぞれの比較はまあそうなのかもしれないんだけど、そもそもどういうtraitがあってどういう時に使うべきなのかを全て把握できてないせいで実際にコード書く時にどれを使うとRustらしいコードになるのかわからなくなるってのがしんどいんだよね
1000:デフォルトの名無しさん
24/02/23 23:59:41.76 hX/YHnPg.net
>>988
どの分野のどんな話でも基本パターンの学習による慣れ
問題
match std::env::args().XXXXX {
Some("yes") => ...,
Some("no") => ...,
_ => ..., // エラー
}
1001:デフォルトの名無しさん
24/02/24 02:12:39.95 YQ3M0cmx.net
梅
1002:デフォルトの名無しさん
24/02/24 04:00:00.27 felFEjYK.net
「当然こういうのが標準ライブラリにあって然るべきだろう」みたいな感覚ができるから結局は慣れ。
常識的に考えてあるだろうと思ったら nightly だったみたいなこともよく経験するから俺が欲しいようなものはみんな欲しいんだなと思う。
実質的に言語の一部みたいなくらいのやつは嫌でも避けられないから何度もドキュメントを読み返すはめになるし、そのうち自然に使えるようになる。
1003:デフォルトの名無しさん
24/02/24 12:21:57.67 lhpjpr9r.net
>>987
Derefは演算子でも利用されるがDerefそのものが演算子(や演算子の実装)というわけではない
Type Coercionというのは型変換(Type Conversion)の一種なのでDerefは変換ではないというのもやや言い過ぎ
各型で決められた一つの型にderefされるのは演算子だからという理由ではなくて
Derefはスマートポインタが包んでる値へのアクセスを便利にするために用意されたものだからderef先の型は自然と一つに決まるため(>>733)
&T→TはDerefの役割ではない
1004:デフォルトの名無しさん
24/02/24 12:57:43.72 Sbx59RJL.net
AsRefとBorrowは未だにわからんなあ
調べてもHashMapがBorrow要求するならそこだけBorrow使っておけばいいか……で思考停止してる
1005:デフォルトの名無しさん
24/02/24 13:58:08.04 Q2pRspv0.net
埋
1006:デフォルトの名無しさん
24/02/24 13:58:23.94 Q2pRspv0.net
生め
1007:デフォルトの名無しさん
24/02/24 13:58:40.99 Q2pRspv0.net
、埋め
1008:デフォルトの名無しさん
24/02/24 13:58:46.56 Q2pRspv0.net
!埋め
1009:デフォルトの名無しさん
24/02/24 13:58:52.17 Q2pRspv0.net
?埋め
1010:デフォルトの名無しさん
24/02/24 13:59:00.55 Q2pRspv0.net
○埋め
1011:デフォルトの名無しさん
24/02/24 13:59:07.65 Q2pRspv0.net
~埋め
1012:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 34日 14時間 37分 28秒
1013:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています