Rust Part6

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/07/28(土) 03:04:38.63ID:kAX50nYD
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 Part5
http://mevius.5ch.net/test/read.cgi/tech/1518347244/
2018/12/08(土) 23:02:19.67ID:StthUKB3
>>348
Facebook採用してたっけ?あそこはDだったような…
MSの間違いじゃない?MSだったらAzureの中の一部で採用してたはず…
因みにGoogleも自社製エディタに(たぶん20%ルールでだけど)採用してるね
もしFacebookも採用してるならApple以外の主要IT企業は全て採用してることになるな
(AppleはObjectiveC/C++とSwiftしか使わないしね…)
2018/12/08(土) 23:48:17.93ID:6+mjNqXv
まあクソアプリほどどの言語で書いたかとかアピールするよね。
2018/12/08(土) 23:52:33.64ID:lASXqBfj
クソアプリほどオープンソース?
2018/12/09(日) 02:02:42.61ID:Xn4iOyS/
半角こんなとこまで現れてんのか
2018/12/09(日) 02:07:51.53ID:Xn4iOyS/
>>349
低レイヤーでC++の次世代言語って意味合いではDとRustって似たとこあるよね
大きな違いはバックボーンとしてMozilaという巨大コミュニティがあるところだけど
2018/12/09(日) 08:39:36.42ID:rwNGSJ2b
クソ言語ほどHNでポイント稼ぐよな
2018/12/09(日) 10:44:39.45ID:YxoLru6a
ハンドルネーム?
2018/12/09(日) 14:03:01.32ID:c43JK2So
Rustは良いけどMozillaの将来が心配
MSも撤退するしこれから更に厳しくなりそう
2018/12/09(日) 14:18:04.29ID:2pQIpR7Q
>>356
MSが撤退っていうのはブラウザエンジンの話をしてるのか?
358デフォルトの名無しさん
垢版 |
2018/12/09(日) 16:05:40.11ID:BNrpwBjL
ただの糖質だろ
2018/12/09(日) 19:33:03.82ID:RNFPl7GW
ブラウザエンジンの話
Mozillaが厳しくなるとRustにも影響がある
2018/12/09(日) 19:59:59.46ID:2pQIpR7Q
>>359
Mozillaはなんだかんだ言っても一応非営利団体だから
MSみたいにブラウザエンジンを手放すようなことはしないはず
つまり、Firefox(Gecko)が消える時はMozilla自体が消える時と同時で、
流石にMozilla自体が消えるとは考えにくい…
2018/12/09(日) 20:17:58.30ID:Xn4iOyS/
いうてもWebメールじゃないSMTP式のメールのメーラーとしてはMozilaのThunderbirdのシェアってそこそこ高くない
2018/12/09(日) 22:50:45.52ID:RNFPl7GW
ThunderbirdはMozillaから切り離されるんじゃないの
363デフォルトの名無しさん
垢版 |
2018/12/09(日) 23:11:23.09ID:piyaaQaM
ブラウザに関してはグーグルが死なせないと思うけどな
2018/12/10(月) 09:12:14.39ID:aoFPjOc9
MDNって言うほど貧弱じゃなくない?
2018/12/10(月) 09:24:08.88ID:90UOO2rs
仮にMozillaがどうにかなってもRustは大丈夫だろ
2018/12/10(月) 12:32:50.59ID:0C3QpRH/
楽観的だな(笑)
2018/12/10(月) 14:23:42.89ID:i6gV1o71
初期はMozilla頼みだったけど、今はそうでもないという認識
2018/12/11(火) 07:43:47.36ID:6UpzsT8a
なんか新しくマクロ増えたみたいだけど使い勝手どう?
369デフォルトの名無しさん
垢版 |
2018/12/11(火) 21:35:58.04ID:P3z87FBj
stableって今1.31.0だろ。
「nightlyが久々にやらかした+distマシンの環境壊した+CI壊した」でnightlyが三日止まっててまだ1.32.0だからdbgマクロくらいしか違いないぞ。
2018/12/13(木) 00:08:25.48ID:75wuALWM
モナド変換子がほしい
371デフォルトの名無しさん
垢版 |
2018/12/13(木) 09:19:17.49ID:MIS8jLYk
  ∧_∧  / ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< ・・・
 ( ⊃ .旦|  \_____
  し_)___)
2018/12/14(金) 01:30:52.83ID:dZAIZmaz
モサド変監視ほしいの?
2018/12/14(金) 08:56:10.14ID:jGITOnwL
Rustのドキュメント日本語サイトが404になってた
2018/12/15(土) 00:37:40.07ID:Hly2v07A
心の中に404はあるよ
2018/12/16(日) 11:50:25.28ID:kVzpWd9g
パイプと型変換だけで十分なところにモナドを要求する馬鹿。
2018/12/16(日) 18:14:31.47ID:w0ERAAOh
こっちの日本語サイトは生きてるけど
https://doc.rust-jp.rs/
本家は多言語対応辞めたんかな見つからない
https://www.rust-lang.org/
2018/12/17(月) 00:55:12.89ID:Q0yF3pSK
下の方に旧サイトへのリンクがある
2018/12/19(水) 00:17:41.51ID:kru7p0rZ
どんなに否定したって下のお口は正直ですからね
2018/12/23(日) 17:23:40.20ID:8b39kAUV
旧サイトのほうがいいなすっきりしてて
情報量的にもデザイン的にも
2018/12/23(日) 19:22:40.32ID:AGEXmg0r
なんか安っぽくなったね。詐欺のベンチャーみたいなページになった。
以前のデザインのほうが圧倒的に良い
2018/12/23(日) 23:03:24.89ID:Mt5iJ+Fg
駆けつけでいきなり言語の特徴とplayground見せるのは話が早くていいよね。
なんか気になればそのままナビゲーションヘッダのリンク辿ればいいし。
382デフォルトの名無しさん
垢版 |
2018/12/24(月) 11:16:50.86ID:YXqLjtll
>>380
ほんそれ
2018/12/25(火) 01:59:30.60ID:walX28QA
現在開催中のこのAIコンテストの説明のサンプルコードにRustが選ばれているあたりRustは世界一素晴らしいプログラミング言語であることが分かる

http://russianaicup.ru/p/quick
2018/12/25(火) 17:58:48.15ID:5JJKyjkR
Rustと最初の3文字が一致しているので親しみを抱いてるんですかね
2018/12/25(火) 19:24:34.64ID:9T0J1rjG
どうかなあいやでも俺もそう思う
386 【87円】 【ニダー】
垢版 |
2019/01/01(火) 00:34:50.41ID:Z6HfKRO/
今年こそRustを日本中で流行らそうな
387デフォルトの名無しさん
垢版 |
2019/01/01(火) 02:32:05.03ID:eZvGQ8mf
せやな
2019/01/01(火) 09:59:51.39ID:mgYjOhM6
別に流行らんでも使ってりゃいいじゃん。
389デフォルトの名無しさん
垢版 |
2019/01/01(火) 13:21:50.94ID:ycrn+5XF
俺は使ってるから君らも使えよ
2019/01/01(火) 18:09:29.86ID:H9/ceTM6
流行ろうが流行らなかろうが使う
2019/01/02(水) 06:33:05.51ID:6wUS1VYB
マイナー言語やってるけどしんどい😭
いずれRustに乗り換える💪
2019/01/02(水) 12:26:01.33ID:c5jR4khc
仕事で使えないから趣味で使いたいけどスマホアプリとか作れるようにならんかな
wasmでやれるん?
2019/01/02(水) 22:18:13.37ID:jIZCjD6X
android用のglueある
2019/01/06(日) 02:19:11.11ID:RYpyUdGD
所有権借用はなんとなく理解できたがライフタイムだけよくわからない
なにがわからないのかすらわからない
2019/01/06(日) 08:25:05.72ID:4M8noAKR
元々わからなかったけどNLLでよりわからなくなった
2019/01/06(日) 21:01:21.58ID:Y1gcigWk
lifetime関係のエラーが出たら、一歩引いて考えないとドツボにはまる
どうして借用にしたのか、誰が責務を負うべきなのかとかを見直していくと、まあまあ綺麗な形でエラー出なくなるから楽しい
2019/01/06(日) 22:41:12.99ID:iA9hXNaZ
>>394
ライフタイムは変数のスコープと一緒だよ。
ただrustの場合、関数の引数に対してライフタイム指定ができたりするんだが、
それを省略した場合なんかのルールが結構複雑なんでわかりづらくなってる。
まあ色々検討した結果が今の状況なわけでこれはこれでしょうがないんだが。
398デフォルトの名無しさん
垢版 |
2019/01/07(月) 18:55:30.56ID:h9/nr8aR
きようもrust書いた
たのしかった
2019/01/07(月) 19:23:50.19ID:62wl4FOH
らすたまだあるかな
2019/01/07(月) 23:27:09.65ID:xV9XgTIe
>>397
>ライフタイムは変数のスコープと一緒だよ。
ちげーよ。extentの方だよ。
2019/01/09(水) 02:57:56.42ID:vCJsRJvg
ide使いたい初心者なんだけどintellijもvscodeも補完が微妙だった。
エディタ上で赤く無くてもコンパイルしたらエラー出る。なんか設定おかしいのかな。。
2019/01/09(水) 07:22:34.83ID:aiUc5v61
RustのIDE環境はまだまだ未発達なのです(´;ω;`)
2019/01/10(木) 08:23:28.84ID:lwucKgCv
あきらさんowやめてrustの解説に専念してほしい
2019/01/10(木) 20:34:05.07ID:Hgkpvvuo
>>403
いやまずお前は他人に依存してないで公式ドキュメントちゃんと読んでQiitaでも読み漁れよ
2019/01/10(木) 21:12:55.85ID:QCs5TwSX
Juiceのユーザっているのかなぁ
ActcastはRustで書かれてるらしいけど
2019/01/11(金) 01:16:47.51ID:pdgYcych
>401
intellij rustだけど補完もリファクターも、traitの実装も出来る。
2019/01/11(金) 20:15:12.46ID:3i4YWAld
文字列を返却する関数ってどう書くんだっけ?
2019/01/11(金) 20:17:35.01ID:O9pa1tkJ
>>407
Rustの文字列には何種類かありまして……
2019/01/11(金) 20:23:27.40ID:wjQF1dR9
メンドクセーッ
2019/01/11(金) 23:52:16.86ID:SaJhEqyf
javaにも2,3種類あるだろ
2019/01/12(土) 01:23:20.36ID:I2V52GgH
>>406
マジで?俺のintellijはあんまりintelliやないんやけど。
(0..10).
これでfor_eachとかの補完できる?
2019/01/13(日) 00:39:51.18ID:hYXV78lL
intelliJ rustもrust(rls)も全部が全部補完出来るわけじゃないよ。
むしろRange系がほとんど補完効かない。
2019/01/13(日) 01:10:12.67ID:2nXE8bQq
rlsって2016年に登場した時いつか脱racerするとか言ってたと思うんだけど何で未だにracerに頼ってるんだろ?
clangはclangdとかcclsとかあってどっちもコンパイラを使って強力に補完出来るけどrustも同じような方針で実装出来ないの?
2019/01/13(日) 04:00:11.67ID:4OSEbwLo
>>412

> intelliJ rustもrust(rls)も全部が全部補完出来るわけじゃないよ。
> むしろRange系がほとんど補完効かない。
そうなんか。まあそれは慣れればええ話か。
ide上で赤くないのにコンパイルエラーになるのは何か環境構築に失敗してるのかな?
単純なシンタックスエラーは赤くなるんだけど、所有権まわりは赤くなってない気がする。
2019/01/13(日) 23:36:03.48ID:bHKSc5vy
>>413
racerはfallbackしたときだけでそれ以外はコンパイラ使うよ。
インクリメンタルコンパイルがまだまだだから出来ること限られるだろうけど。

>>414
>所有権まわりは赤くなってない気がする。
赤線つくね。マウスオーバーでエラー内容もshort版を整形したようなの確認できる。
quick fixが弱いけど。

rlsならrust-srcとrust-analysis。intellij rustならrust-src入ってる?
416デフォルトの名無しさん
垢版 |
2019/01/14(月) 09:38:00.11ID:0lebqFeg
>>415
できた!ありがと。
intellij-rustの設定おかしかったみたい。
2019/01/15(火) 00:14:36.16ID:EnbKgMOU
Rustで簡単なゲームを作ってみたいんだがフレームワークは何が良いんだろうな
SDLやDirectX、OpenGL等のラッパーは一応あるようだけど
2019/01/19(土) 04:53:19.32ID:KuvXwQQD
言語レベルで静的にstructを差し替える方法って無いんかな?
マルチプラットフォームのアプリを仮定するとして
アプリはSystem構造体下のメソッドを経由して低レベルの機能へアクセスする
System構造体の中身はビルド時に決まる物だし実行中に選択するのはコストの無駄
ビルド時にコンパイル&リンクするファイルを差し替える方法はあるが・・・
419デフォルトの名無しさん
垢版 |
2019/01/19(土) 21:10:10.72ID:chH9K/tE
target_os とかとは違うの?
2019/01/19(土) 23:26:08.16ID:mgFfw5BT
静的リンクならcfgマクロ使った条件付きコンパイルしかないよ。
421418
垢版 |
2019/01/20(日) 02:42:18.64ID:Ej9w6434
ありがと
#cfg[(target_os=〜
struct System {
とか書くしかないのか

というかググっていてもマルチプラットフォームのアプリを作る例って出てこないんだけど
どういう風にするのが好ましいのだろうか。Cargoの使用例とか全然判らん
ターゲットによってコンパイラも変わるし、リンカやリンカに渡されるオプションも変わる
リンク後に追加の処理が必要になるケースもあったり
2019/01/20(日) 11:51:23.29ID:fjDkObgS
有名なcrateはだいたいマルチプラットフォームになってるでしょ
423418
垢版 |
2019/01/20(日) 13:10:03.87ID:Ej9w6434
そのレベルじゃなくて一つのプロジェクトで
1.Windowsでビルドする/動く
2.Linux/FreeBSDでビルドする/動く
3.Linuxでクロスビルドする/別アーキテクチャのプラットフォームで動く
みたいなのをやりたい。1〜2はともかく3はベアメタルに近いのでコアのソースはno_std付きになる

クレートもWindowsAPIへアクセスする場合Cargo.tomlに
[dependencies]
winapi = "〜
kernel32-sys = "〜
とか書くけどコレをつけたまま他のプラットフォームでビルドできるのか?とか
仕様上無視してくれるならそれで良いけどはっきりしないと無用なトラブルの元
クレートを使わずにソースにexternを並べていって条件付きコンパイルすればその心配は
なくなりそうだけど各種定義とか、IA32/AMD64環境下の差異の吸収とかいろいろ面倒だし
2019/01/20(日) 13:24:49.19ID:fjDkObgS
>>423
有名なcrateはだいたいちゃんとそれこなしてるから見てきなよ
425418
垢版 |
2019/01/20(日) 15:13:45.29ID:Ej9w6434
スマン
Carge&winapiを使ってWindowsAPIを叩くサンプルを作ろうとしたらそこまでたどり着けん
use出来なくて詰まっている

extern crate winapi;
use winapi::minwindef::BOOL;
>cargo build
error[E0432]: unresolved import `winapi::minwindef`
--> src\main.rs:4:13
|
4 | use winapi::minwindef::BOOL;
| ^^^^^^^^^ Could not find `minwindef` in `winapi`
パスがおかしいっぽいのでソースを見るべきだが、Cargoが取ってきたソースがどこにあるのか判らない
というかコレを調べられないと非対応環境でどう振る舞うのかも調べられない

rustcでコンパイルするFFI直でWindowsAPIを叩くコードは動作させられている
2019/01/20(日) 15:34:24.69ID:IFCR+fSZ
Cargo.toml に

[target.’cfg(target_aech = "x86_64")’.dependencies]

とか書けるけど、これでも不十分?
427デフォルトの名無しさん
垢版 |
2019/01/20(日) 22:10:39.80ID:Yfn6IVUJ
cargoがとってきたのはホームの下の.cargoにあるよ

質問がいまいち判然としないけど
428デフォルトの名無しさん
垢版 |
2019/01/20(日) 22:18:26.33ID:XwDXpx/J
WEB開発でフロントエンドもバックエンドもRustで開発できるようになるみたいだね
そしてJavascriptは衰退するらしい
まさに次世代の言語か?
2019/01/20(日) 23:40:56.74ID:Ba0cWsCk
Javascriptを倒すのは無理
430418
垢版 |
2019/01/20(日) 23:41:16.28ID:Ej9w6434
>>426
それでいけそうかも。というかwinapiにそんな書き方があった

>>427
ありがと。見つかった
README.mdにあったサンプルはビルドできた
1〜2年前のコードだとビルドできないようだ

いくら発展途上の言語とはいえ1〜2年前の情報が使えないのはつらいなぁ
車輪の再発明になってもFFIで書いていった方が良いのか?

というかみんなどうしているの?情報の有効期限が1年もないんじゃ
ちょっと前のを修正するにもドキュメントはないしソースとにらめっこになっちゃうよね
431デフォルトの名無しさん
垢版 |
2019/01/21(月) 21:41:20.34ID:ieTTkacC
nightlyでも使っていない限りは、基本的に過去のコードはビルドできると思うけど
2019/01/21(月) 22:24:30.39ID:imUXN0q+
>>418
rustにとって一年前は古いけどwinapi::minwindefは今はwinapi::shared::minwindefよ。
apiが変更されただけだからまずdoc読めばいいよ。
あとrustupでrust-docインストールすればthe cargo bookもあるからそれも読んで。
433418
垢版 |
2019/01/22(火) 08:09:48.68ID:owMGrrnU
>>432
0.3.x以降はCargo.tomlにfeaturesを書かないとダメらしい
あとunsafe祭りになってしまいそうなんだがwinapiの仕様でFAなんかな
434418
垢版 |
2019/01/24(木) 23:36:09.43ID:mR/sBWjl
ttps://docs.rs/winapi/0.3.6/winapi/um/minwinbase/struct.OVERLAPPED_u.html
これってどうやって初期化すればいいんだろ?
ReadFile/WriteFileでOVERLAPPEDを使いたいんだが
2019/01/25(金) 01:30:10.23ID:7aXnDiIo
よく知らんけどOVERLAPPEDをmem::zeroedで初期化して引っ張ってくるんじゃないの
436418
垢版 |
2019/01/26(土) 00:18:28.40ID:ec8OMVht
>>435
ありがと。それでとりあえず出来た
2019/02/01(金) 02:53:50.28ID:bNyzNXhv
TryFrom/TryInto がもうすぐか
438デフォルトの名無しさん
垢版 |
2019/02/05(火) 00:11:17.23ID:2NDs+2LZ
型のパターンマッチってメンテナンス性が悪かったりする?
2019/02/05(火) 00:26:16.28ID:pEuhZWls
ML系の関数型言語の経験があるなら全く問題ない
経験ないならHaskell/OCaml/F#あたりのうち最低一つは触れてみることを強くお勧めする
2019/02/05(火) 00:39:59.41ID:XXfCgR8v
どれ?
441440
垢版 |
2019/02/05(火) 00:41:00.53ID:XXfCgR8v
>>438
2019/02/05(火) 00:42:22.65ID:UXw61YxU
やっぱRustに限らず新しめの言語できる人って英語もスラスラ読み書きできるもんなの
読むのは時間かければ何とかなるけど書けないから質問する場所が限られる
2019/02/05(火) 00:48:10.95ID:28bd5R1v
パターンマッチは型で分岐するというより型に当てはめるという感覚の方が近い
OO言語でマサカリ投げられるような型で分岐するというのとは似て非なるものなんだが、
そのへんの微妙な感覚を掴んでからでないと糞コードの温床になりそう
444デフォルトの名無しさん
垢版 |
2019/02/05(火) 05:25:42.44ID:xTPbFJiK
>>442
slackで聞くといい
2019/02/07(木) 12:31:53.09ID:nkNDSe3E
何かのIDEで
(0..10).
の補完が効くようになったら教えて
2019/02/07(木) 23:00:54.15ID:+NlXQGa+
RangeはIteratorを直接実装するからcurrent scopeにIteratorがuseされてない状態でIteratorのメソッド解析出来ないと無理だろうね。
useされてないトレイトのメソッド使ったら自動でuseする機能のほうが先。
2019/02/08(金) 00:09:20.59ID:EX3qDOo1
良記事

Learning Rust via Advent of Code
https://www.forrestthewoods.com/blog/learning-rust-via-advent-of-code/
448デフォルトの名無しさん
垢版 |
2019/02/09(土) 15:36:54.38ID:6/bHpQ6m
トイレット
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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