Rust Part7

■ このスレッドは過去ログ倉庫に格納されています
2019/07/14(日) 23:31:47.54ID:PySyhRf9
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/
2019/09/12(木) 18:15:04.09ID:Meniefv0
環境毎のクレートのバージョン違いでコンパイル通らないようなことがないようにバージョン指定させるくせにコンパイラのバージョン違いのせいでコンパイル通らないとかクソ過ぎひん?
302デフォルトの名無しさん
垢版 |
2019/09/12(木) 18:20:44.52ID:oxTdK/zC
rust-toolchainを作りなされ
2019/09/12(木) 19:29:03.99ID:hoEtlcNn
無知な煽りカスにまで親切に教えてくれてありがとうおかげで無事通った(`;ω;´)
2019/09/12(木) 21:04:34.30ID:jNKjrGpq
オレオレ糖衣構文が欲しければ一対一変換するトランスパイラでも書けばいいだろ
2019/09/13(金) 00:04:32.53ID:hO7OHJyv
昔は Box が ~ で Rc が @ だった
2019/09/13(金) 00:19:06.54ID:17Jpcv+R
俺は逆にlifetimeパラメータ省略をやめるべきだと思ってる。
2019/09/13(金) 09:11:20.49ID:ccyj1bAE
ちゃんと勉強しようと思ったらオライリー本を読むべき?
308デフォルトの名無しさん
垢版 |
2019/09/13(金) 09:57:21.64ID:LrhujYjR
日本の場合オライリー本買ったら原著はマニングだった、なんてことも。
2019/09/13(金) 14:13:51.27ID:ohNILJsT
公式リファレンスで良いやん
2019/09/13(金) 14:57:59.88ID:R+lGpgh7
俺は物理本の方がやるぞという気になるから買った
2019/09/13(金) 15:01:06.58ID:8tLP3I45
test.rs:
fn main() {
println!("{}", "hoge");
}
でコンパイル出来るのに、rust/src/libcore/num/dec2flt/algorithm.rsの関数内にprintln!を書いても
error: cannot find macro `println!` in this scope
となるのは何でなん?
コンパイル出来る用に教えてください
ちなみに、rustc自体はちゃんとコンパイル出来てtest.rsのビルドと実行は出来てます
2019/09/13(金) 15:13:08.13ID:8tLP3I45
use std;
use std::io;
と先頭に追加しても
error[E0432]: unresolved import `std`
と言われる…
stdすら簡単に使わせてくれないとか恐ろしく敷居が高い言語なのは分かったけど、>>311のprintln!だけは何とか動かしたいので、
よろしくお願いしますm(_ _)m
2019/09/13(金) 16:13:13.40ID:FZa6ZvSI
釣れますか?
2019/09/13(金) 16:22:57.80ID:8tLP3I45
>>313
何が?
完全にRust初心者なんだからしょうがない
多分外部ファイルに依存してるだろう事は何となく分かってきたけど、まだ解決には至らず
2019/09/13(金) 17:00:45.98ID:ucGTEY8O
正直釣りにしか見えないが…。
なぜ初心者がいきなりcoreライブラリいじろうとしてるの?
あとcoreはmallocとかもない環境で動く必要があるから
とてもprintlnなんて無理だと思うけど。
2019/09/14(土) 18:11:14.79ID:vJ0EfuKq
 (V)     (V)
  ヽ∧∧∧ 丿
┌<┌ ゚ ∀ ゚>┐ ラスタシアーン!!
2019/09/14(土) 18:17:32.07ID:wDFkwEGw
https://www.atmarkit.co.jp/ait/spv/1909/13/news133.html
318デフォルトの名無しさん
垢版 |
2019/09/15(日) 00:25:56.87ID:84ndTw+e
ヌルポチェック境界チェックしてたら遅くなるに決まってるやん
Cはそんなことしなくて済むから爆速な訳で
2019/09/15(日) 11:32:00.80ID:iFCAy1qK
絶対にめくれないからパンツいらないスカートで
アスレチックでもスカイダイビングだもなんでもするのがCだわな
2019/09/15(日) 11:37:40.55ID:Ms2MnLBB
素晴らしい例えだ
感動した
321デフォルトの名無しさん
垢版 |
2019/09/15(日) 12:03:39.49ID:IVfbaIvY
いいねw
2019/09/15(日) 12:40:15.54ID:RmuGhz/Y
そして落っこちて死ぬと
http://peaceman.jugem.jp/?eid=2290
2019/09/15(日) 12:41:41.15ID:p6YweuI4
何だこのストレートに脳天に突き刺さる説明!?
324デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:06:50.28ID:JVfSd4XU
風呂でもセックスでもパンツ脱がないのがRustだわな
325デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:41:05.29ID:CYqvBFjr
スカートも不要なのがC
2019/09/15(日) 15:51:33.74ID:+SG+NzSN
デバッガー「見えたぁ!!!」
2019/09/15(日) 17:00:20.75ID:kg331Dv1
パンツ履かないC言語
鉄壁のパンツRust
328デフォルトの名無しさん
垢版 |
2019/09/15(日) 22:55:46.82ID:IVfbaIvY
Rustはむしろ貞操帯
2019/09/16(月) 01:53:49.38ID:6Bt41uEu
Rust勉強し始めたんだけど、公式ドキュメント読み終わったら何しよう
2019/09/16(月) 02:52:51.25ID:h38vlOtE
その貞操帯鍵穴錆びてるよ…
331デフォルトの名無しさん
垢版 |
2019/09/16(月) 08:18:42.11ID:jUyoTXTl
何をするにも貞操帯外したり付けたりガチャガチャして複雑になるんだよなあ
2019/09/16(月) 08:35:42.66ID:K83on/o4
>>331
これ
2019/09/16(月) 08:38:49.73ID:5uT5V90s
そんなふうに考えていた時期が俺にもありました
でも今はderef coercionでハッピーな毎日です
334デフォルトの名無しさん
垢版 |
2019/09/17(火) 05:38:58.62ID:yfhtQLgD
これ読んでたんだけど
https://stackoverflow.com/questions/50786894/rust-trait-and-its-default-implementation

やっぱ 回答みたいに impl 側でがちゃがちゃやるしかないん?
おまいらならもっとうまくヤりそう
2019/09/17(火) 08:51:01.90ID:/BOEHyZy
Tのままでチェックするからこうなるんでu32にしてチェックしていいならそうする
TもCopy + Into<u32>でトレイト拘束するだけですむ
2019/09/17(火) 08:53:25.78ID:tflGIHXS
単にv1.0相当のコードをマクロで生成するのでいい気がするが。
2019/09/17(火) 23:28:59.67ID:yfhtQLgD
なんだかんだマクロ最強か
2019/09/18(水) 00:07:56.14ID:H2DpgLxy
数年後、Rustの世間的な評価はマクロが濫用されてるからクソ
になってる気がする
2019/09/18(水) 08:28:44.98ID:no1kSscq
そりゃ言語拡張性からいったらマクロは最強だよ。
そんなことは30前にlispが示してる。
2019/09/18(水) 08:40:04.21ID:PxzURkNk
何をマクロにするかだよね
341デフォルトの名無しさん
垢版 |
2019/09/18(水) 10:23:10.82ID:L8SHYgAR
マクロ最強
https://mevius.5ch.net/test/read.cgi/tech/1565187727/
2019/09/18(水) 10:47:59.35ID:pbP4krHb
✗ Rustのマクロが汎用されているからクソ
○ プリプロセッサで単純に置換する不健全なマクロを汎用するからクソ
Rustはまだましなほう
2019/09/18(水) 11:34:11.09ID:RM25JK7K
ライブラリで定義するのはいいがプロジェクト内ではレビューの時に面倒だからなるべく書きたくないな
2019/09/18(水) 13:02:58.98ID:TjjBk4yd
頻出パターンならマクロになってる方がレビューしやすい
2019/09/18(水) 13:03:25.81ID:TjjBk4yd
Cのマクロと違って見た目からマクロであることが明らかだし害は少ない
346デフォルトの名無しさん
垢版 |
2019/09/18(水) 13:41:17.68ID:1cXUqFYA
汎用する?
2019/09/18(水) 14:40:03.73ID:5wL1TG3Q
直接依存するクレートのfeatureはdependenciesに記述できますが、依存するクレートが更に依存するクレートのfeatureをセットしたいときはどうすれば良いんでしょうか
2019/09/18(水) 15:00:15.00ID:f+hbVZ57
エアプだからよく知らんけど依存クレートが依存x2クレートのfeature使うなら依存クレートのtomlにfeature書いてあるし、
依存クレート経由しないで依存x2クレート使うなら自クレートが直接依存してるわけだから自クレートのtomlにfeature書くだけじゃないの?
2019/09/21(土) 22:48:09.77ID:KOc79te2
TRPLのPDF版10章まで読んだけど挫折しそう
350デフォルトの名無しさん
垢版 |
2019/09/21(土) 23:26:15.34ID:ajCyJ6wo
アホに良いコードは書けないのだ
アホでも書けるとかいう奴は、アホかアホな組織に属してるかその両方かだ

その両方かだ、って一度言ってみたかったんだ
351デフォルトの名無しさん
垢版 |
2019/09/21(土) 23:27:32.62ID:ajCyJ6wo
書くところ間違ったアホです
2019/09/21(土) 23:54:56.27ID:B7P1QhOW
世の中アホが書いたコンパイラの教科書が広く出回っているから紛らわしいな
2019/09/22(日) 12:11:36.94ID:8mgJSnoC
アホじゃなくてエイホだっつーの
354デフォルトの名無しさん
垢版 |
2019/09/22(日) 12:22:35.80ID:OEThTvH6
ajo ← スペイン語で発音しろ
355デフォルトの名無しさん
垢版 |
2019/09/22(日) 13:20:45.75ID:NWulzMwt
AWK
356デフォルトの名無しさん
垢版 |
2019/09/25(水) 16:41:02.11ID:GHCxkzpX
ローカル変数を意図的に snake_case じゃなく書きたいんだが、警告を出さない方法ある?
例えば win32 API 関連を扱う時にやはり camelCase がスマートに思えるシーンがあるんだ
357デフォルトの名無しさん
垢版 |
2019/09/25(水) 16:56:24.39ID:r0+GDB9/
allow(non_snake_case)
を使いたまへ
358356
垢版 |
2019/09/25(水) 18:23:59.57ID:GHCxkzpX
>>357
怒られなくなりました
ありがとうございます

```
#[allow(non_snake_case)]
pub fn dummy() {
let hWnd = 0;
}
```
2019/09/25(水) 18:52:38.83ID:YV2E2PPu
そんなことで警告出るのか
360デフォルトの名無しさん
垢版 |
2019/09/25(水) 18:54:51.99ID:it7hFznu
ノンスネークケースを表す識別子がスネークケースとはいかがなものか。
allow(non_snake_case)
これ自身を
allow(nonSnakeCase)
と書きたいものである
361デフォルトの名無しさん
垢版 |
2019/09/25(水) 20:08:08.16ID:r0+GDB9/
そんなことって言うけど大事なことだよね
362デフォルトの名無しさん
垢版 |
2019/09/25(水) 20:21:48.81ID:bkoUXP+/
ErrorやWarningを出力するときにHelpやNoteで解説も出力してくれてすごく助かる
2019/09/25(水) 22:38:57.35ID:LBtfjA7U
IEEE top programming language 2019が公開
https://spectrum.ieee.org/computing/software/the-top-programming-languages-2019

Rは5位や
2019/09/25(水) 22:53:25.25ID:68BFbOjP
えっ
2019/09/25(水) 23:26:32.08ID:rQhNlpv9
どういうことなの…
2019/09/25(水) 23:55:26.38ID:mTIaTH5b
ここはRはRでもRustスレだぞ
2019/09/25(水) 23:57:15.10ID:8yvlK+3a
ほとんどいっしょじゃん
2019/09/26(木) 16:03:54.65ID:JiUn+jUB
ジェネリクスとPhantomData使って特定の関数呼んだかとかの条件付けるんならせめてエラーメッセージもちゃんとして欲しい(´・ω・`)
2019/09/26(木) 16:19:41.45ID:qa4bTo/t
要らない何も捨ててしまおう君を探し彷徨うマイソウッ!
2019/09/26(木) 17:11:23.47ID:RE9M+3kx
関数呼んだかチェックを実行時でなくてコンパイル時にできるってこと?
2019/09/26(木) 23:30:20.63ID:HeylAp30
Rust 1.38.0リリース!
2019/09/27(金) 02:38:10.86ID:boczQ2su
キタ━━━━(゚∀゚)━━━━!!
2019/09/27(金) 13:19:26.24ID:I3+hYE7s
RustとRの違い

R
データサイエンティストが仕事で使う
言語として結果を出している
速度は残念ながら遅い

Rust
陰キャが気持ちよくなるために使う
実績ナシ
速度は速いらしい(ソース無し)
374デフォルトの名無しさん
垢版 |
2019/09/27(金) 13:24:28.05ID:bGFj4S5H
R指定
2019/09/27(金) 14:09:17.54ID:foryHhOm
RustとRubyの違い

とか書くとスレが荒れる時代はもう過去なのかな
2019/09/27(金) 15:06:25.40ID:I3+hYE7s
RubyとRustの違い

Ruby
陽キャのおもちゃ
負債作成の実績がある
遅い

Rust
陰キャのおもちゃ
なにも作られてないので負債も作られていない
さすがにRubyよりは速い
2019/09/27(金) 15:10:10.66ID:FRvVNNut
FirefoxのCSSエンジンとかFirecrackerとかDropboxとかnpmとかあるけど見たくないヤツには見えないからなあ
2019/09/27(金) 18:38:35.49ID:/s5L2MEw
自分では書きたくない言語
確定申告のようなコーディングスタイル
2019/09/27(金) 19:04:11.92ID:ikgA/i06
>確定申告
わかる
380デフォルトの名無しさん
垢版 |
2019/09/27(金) 20:01:19.53ID:PO8lPJ5D
dieselなんかこれじゃない感あるなと思ったらアクティブRecord作った人が作ってるのか
代替ないのかね
2019/09/28(土) 13:12:58.36ID:VxLIFoZc
>>376
プログラマーな時点で陽キャはない
ウェイかつオタクという最悪な種族
2019/09/28(土) 19:09:22.19ID:kbZ6IYig
RustネイティブでQtやGtkレベルのツールキットがほすぃ(´・ω・`)
2019/09/28(土) 22:50:10.69ID:gNXUW3Qt
どれもやる気なくてダメポ
ttps://gitlab.com/bloom42/research/rust_gui_ecosystem
2019/09/29(日) 02:52:49.38ID:TRtZnyIq
>>382
ぼくも(´・ω・`)
2019/09/29(日) 13:43:42.91ID:FBG2HAFw
人それぞれだと思うんであくまで参考に聞かせて欲しいんだけど
どれくらいのサイズまで#[derive(Copy)]つけます?
2019/09/29(日) 15:19:26.29ID:i6efVVcg
Copyって所有権の話であってサイズとは関係なくない?
2019/09/29(日) 16:30:03.01ID:L34oTjKk
所有権の観点からCopy実装してはならないケースはあるだろうけど、
してもしなくてもいい場合に考慮するのはサイズと意味だろ。
サイズに関して言えば、自分はu64の10倍くらいまでって感じ。
2019/09/29(日) 18:25:18.99ID:hzqyoCtf
Rust Language Cheat Sheet
15.09.2019
https://cheats.rs/
389デフォルトの名無しさん
垢版 |
2019/09/29(日) 19:21:30.01ID:GZbu7mvl
極力付けないな
ぱっと見分かんないから
2019/09/29(日) 20:25:18.89ID:FBG2HAFw
いろいろ感謝

よく例題にありそうな
struct Point { x: i32, y: i32 }
みたいなのなら#[derive(Copy)]しても害はないかなと思って聞いてみた
速度を考えてサイズがusizeの3〜4倍ぐらいまでが相場かなと思ったんだけどね
2019/09/29(日) 20:46:09.39ID:SwLAQNn/
俺が間違ってんのかな、どうもCopyとMoveの意味を勘違いしてるような…

https://doc.rust-lang.org/std/marker/trait.Copy.html
こことかにも書いてあるけどMoveでもCopyでも構造体の値自体は(所有権の意味ではなくmemcpyとしての意味での)コピーされるんだから一緒じゃないの?
2019/09/29(日) 21:03:36.26ID:L34oTjKk
例えば
let x = y;

let x = y.clone();
があったときに前者はノーコストで後者は結構重いかもしれないって感覚があると思うけど、
大きなstructにCopyを実装すると前者で大きなmemcpyが発生してびっくりする、という話。
2019/09/29(日) 21:26:23.34ID:FBG2HAFw
イメージした状況は違うけどそんな感じ
参照経由で扱いたい大きなデータなのに
うっかりコピーされる状況にしちゃって勝手にコピーされるのはちょっと
でも小さいデータならコピーされてもいい
2019/09/29(日) 21:30:49.24ID:PihB9u3J
MicrosoftのC#のドキュメントに何バイトまでstruct (C#における#[derive(Copy)])使う方がいいか
書いてあるのを見た気がする
値は忘れた
395デフォルトの名無しさん
垢版 |
2019/09/29(日) 21:33:28.20ID:GZbu7mvl
Sizedなのは当然としてクリッピーなりラストシーが怒ってくれれば気軽に使えるだけどな
2019/09/29(日) 22:03:15.24ID:ciotleRh
>>394
クラスまたは構造体の選択
https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/choosing-between-class-and-struct

> インスタンスのサイズは 16 バイト未満である。

C#では16byte (128bit) か
397デフォルトの名無しさん
垢版 |
2019/09/29(日) 23:57:00.22ID:6uuCovZS
使用頻度にも依るんだから計測しろよ
別に難しいことじゃ無いし
2019/09/30(月) 00:27:00.93ID:k5ErHMsi
>>392>>393
Copyを実装してようがいまいが(=Move)
let x = y;
したのならどちらも同様にその構造体自体のmemcpyによる複製は行われてるよ?
(もちろんフィールド内の参照が指す先の話じゃなく)
2019/09/30(月) 06:40:12.68ID:URkXaUjC
それはわかってるつもり
関数定義で引数を参照にしそこねた場合とかをイメージしてた
Copyつきだとmoveされずに残るから気づきにくい
2019/09/30(月) 08:53:42.19ID:i9kRAMDA
それで問題なく動いてるならどうでもいいだろ
遅かったら直せば?
どれだけ速かろうが、なんら価値を産まないプログラムの価値はゼロだよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況