Rust Part6
■ このスレッドは過去ログ倉庫に格納されています
ThunderbirdはMozillaから切り離されるんじゃないの ブラウザに関してはグーグルが死なせないと思うけどな 仮にMozillaがどうにかなってもRustは大丈夫だろ 初期はMozilla頼みだったけど、今はそうでもないという認識 なんか新しくマクロ増えたみたいだけど使い勝手どう? stableって今1.31.0だろ。
「nightlyが久々にやらかした+distマシンの環境壊した+CI壊した」でnightlyが三日止まっててまだ1.32.0だからdbgマクロくらいしか違いないぞ。 ∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< ・・・
( ⊃ .旦| \_____
し_)___) Rustのドキュメント日本語サイトが404になってた パイプと型変換だけで十分なところにモナドを要求する馬鹿。 旧サイトのほうがいいなすっきりしてて
情報量的にもデザイン的にも なんか安っぽくなったね。詐欺のベンチャーみたいなページになった。
以前のデザインのほうが圧倒的に良い 駆けつけでいきなり言語の特徴とplayground見せるのは話が早くていいよね。
なんか気になればそのままナビゲーションヘッダのリンク辿ればいいし。 現在開催中のこのAIコンテストの説明のサンプルコードにRustが選ばれているあたりRustは世界一素晴らしいプログラミング言語であることが分かる
http://russianaicup.ru/p/quick Rustと最初の3文字が一致しているので親しみを抱いてるんですかね マイナー言語やってるけどしんどい😭
いずれRustに乗り換える💪 仕事で使えないから趣味で使いたいけどスマホアプリとか作れるようにならんかな
wasmでやれるん? 所有権借用はなんとなく理解できたがライフタイムだけよくわからない
なにがわからないのかすらわからない 元々わからなかったけどNLLでよりわからなくなった lifetime関係のエラーが出たら、一歩引いて考えないとドツボにはまる
どうして借用にしたのか、誰が責務を負うべきなのかとかを見直していくと、まあまあ綺麗な形でエラー出なくなるから楽しい >>394
ライフタイムは変数のスコープと一緒だよ。
ただrustの場合、関数の引数に対してライフタイム指定ができたりするんだが、
それを省略した場合なんかのルールが結構複雑なんでわかりづらくなってる。
まあ色々検討した結果が今の状況なわけでこれはこれでしょうがないんだが。 >>397
>ライフタイムは変数のスコープと一緒だよ。
ちげーよ。extentの方だよ。 ide使いたい初心者なんだけどintellijもvscodeも補完が微妙だった。
エディタ上で赤く無くてもコンパイルしたらエラー出る。なんか設定おかしいのかな。。 RustのIDE環境はまだまだ未発達なのです(´;ω;`) あきらさんowやめてrustの解説に専念してほしい >>403
いやまずお前は他人に依存してないで公式ドキュメントちゃんと読んでQiitaでも読み漁れよ Juiceのユーザっているのかなぁ
ActcastはRustで書かれてるらしいけど >401
intellij rustだけど補完もリファクターも、traitの実装も出来る。 >>407
Rustの文字列には何種類かありまして…… >>406
マジで?俺のintellijはあんまりintelliやないんやけど。
(0..10).
これでfor_eachとかの補完できる? intelliJ rustもrust(rls)も全部が全部補完出来るわけじゃないよ。
むしろRange系がほとんど補完効かない。 rlsって2016年に登場した時いつか脱racerするとか言ってたと思うんだけど何で未だにracerに頼ってるんだろ?
clangはclangdとかcclsとかあってどっちもコンパイラを使って強力に補完出来るけどrustも同じような方針で実装出来ないの? >>412
> intelliJ rustもrust(rls)も全部が全部補完出来るわけじゃないよ。
> むしろRange系がほとんど補完効かない。
そうなんか。まあそれは慣れればええ話か。
ide上で赤くないのにコンパイルエラーになるのは何か環境構築に失敗してるのかな?
単純なシンタックスエラーは赤くなるんだけど、所有権まわりは赤くなってない気がする。 >>413
racerはfallbackしたときだけでそれ以外はコンパイラ使うよ。
インクリメンタルコンパイルがまだまだだから出来ること限られるだろうけど。
>>414
>所有権まわりは赤くなってない気がする。
赤線つくね。マウスオーバーでエラー内容もshort版を整形したようなの確認できる。
quick fixが弱いけど。
rlsならrust-srcとrust-analysis。intellij rustならrust-src入ってる? >>415
できた!ありがと。
intellij-rustの設定おかしかったみたい。 Rustで簡単なゲームを作ってみたいんだがフレームワークは何が良いんだろうな
SDLやDirectX、OpenGL等のラッパーは一応あるようだけど 言語レベルで静的にstructを差し替える方法って無いんかな?
マルチプラットフォームのアプリを仮定するとして
アプリはSystem構造体下のメソッドを経由して低レベルの機能へアクセスする
System構造体の中身はビルド時に決まる物だし実行中に選択するのはコストの無駄
ビルド時にコンパイル&リンクするファイルを差し替える方法はあるが・・・ 静的リンクならcfgマクロ使った条件付きコンパイルしかないよ。 ありがと
#cfg[(target_os=〜
struct System {
とか書くしかないのか
というかググっていてもマルチプラットフォームのアプリを作る例って出てこないんだけど
どういう風にするのが好ましいのだろうか。Cargoの使用例とか全然判らん
ターゲットによってコンパイラも変わるし、リンカやリンカに渡されるオプションも変わる
リンク後に追加の処理が必要になるケースもあったり 有名なcrateはだいたいマルチプラットフォームになってるでしょ そのレベルじゃなくて一つのプロジェクトで
1.Windowsでビルドする/動く
2.Linux/FreeBSDでビルドする/動く
3.Linuxでクロスビルドする/別アーキテクチャのプラットフォームで動く
みたいなのをやりたい。1〜2はともかく3はベアメタルに近いのでコアのソースはno_std付きになる
クレートもWindowsAPIへアクセスする場合Cargo.tomlに
[dependencies]
winapi = "〜
kernel32-sys = "〜
とか書くけどコレをつけたまま他のプラットフォームでビルドできるのか?とか
仕様上無視してくれるならそれで良いけどはっきりしないと無用なトラブルの元
クレートを使わずにソースにexternを並べていって条件付きコンパイルすればその心配は
なくなりそうだけど各種定義とか、IA32/AMD64環境下の差異の吸収とかいろいろ面倒だし >>423
有名なcrateはだいたいちゃんとそれこなしてるから見てきなよ スマン
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を叩くコードは動作させられている Cargo.toml に
[target.’cfg(target_aech = "x86_64")’.dependencies]
とか書けるけど、これでも不十分? cargoがとってきたのはホームの下の.cargoにあるよ
質問がいまいち判然としないけど WEB開発でフロントエンドもバックエンドもRustで開発できるようになるみたいだね
そしてJavascriptは衰退するらしい
まさに次世代の言語か? >>426
それでいけそうかも。というかwinapiにそんな書き方があった
>>427
ありがと。見つかった
README.mdにあったサンプルはビルドできた
1〜2年前のコードだとビルドできないようだ
いくら発展途上の言語とはいえ1〜2年前の情報が使えないのはつらいなぁ
車輪の再発明になってもFFIで書いていった方が良いのか?
というかみんなどうしているの?情報の有効期限が1年もないんじゃ
ちょっと前のを修正するにもドキュメントはないしソースとにらめっこになっちゃうよね nightlyでも使っていない限りは、基本的に過去のコードはビルドできると思うけど >>418
rustにとって一年前は古いけどwinapi::minwindefは今はwinapi::shared::minwindefよ。
apiが変更されただけだからまずdoc読めばいいよ。
あとrustupでrust-docインストールすればthe cargo bookもあるからそれも読んで。 >>432
0.3.x以降はCargo.tomlにfeaturesを書かないとダメらしい
あとunsafe祭りになってしまいそうなんだがwinapiの仕様でFAなんかな ttps://docs.rs/winapi/0.3.6/winapi/um/minwinbase/struct.OVERLAPPED_u.html
これってどうやって初期化すればいいんだろ?
ReadFile/WriteFileでOVERLAPPEDを使いたいんだが よく知らんけどOVERLAPPEDをmem::zeroedで初期化して引っ張ってくるんじゃないの 型のパターンマッチってメンテナンス性が悪かったりする? ML系の関数型言語の経験があるなら全く問題ない
経験ないならHaskell/OCaml/F#あたりのうち最低一つは触れてみることを強くお勧めする やっぱRustに限らず新しめの言語できる人って英語もスラスラ読み書きできるもんなの
読むのは時間かければ何とかなるけど書けないから質問する場所が限られる パターンマッチは型で分岐するというより型に当てはめるという感覚の方が近い
OO言語でマサカリ投げられるような型で分岐するというのとは似て非なるものなんだが、
そのへんの微妙な感覚を掴んでからでないと糞コードの温床になりそう 何かのIDEで
(0..10).
の補完が効くようになったら教えて RangeはIteratorを直接実装するからcurrent scopeにIteratorがuseされてない状態でIteratorのメソッド解析出来ないと無理だろうね。
useされてないトレイトのメソッド使ったら自動でuseする機能のほうが先。 https://volt.ws/lang
https://volt.ws/game
V言語とかいうやつ、GUIアプリとか3Dゲームとかを開発するために作られたらしいけど、GCがないとか1500万行のコードを1秒でコンパイル出来るとかバイナリサイズが極小とかC/C++とのやりとりが簡単とか
これが本当だったらRust負けちゃうんでは
実際Rustで低レイヤーやってる人少ないだろうし 詳細知らんけど低レイヤーに適した言語が出てくること自体は歓迎できるんじゃないの 言語は言語の良さだけでは流行らないんだよ
RustもGoもまあまあ悪くない言語である上で十分なステマを行ったから流行った それ使ったアプリがよほど良くて、開発者をうまく集められて、コミュニティが育たなければ無理だろうな
ソース非公開のうちは勝負にもならん 幾ら優れていようと後ろ盾がなきゃD言語の二の舞だろ コンパイルが速いならジェネリクスも無いんじゃないかね。安全性については対nullしか無いっぽいし OCamlとかジェネリクスあるけどgoよりコンパイル速いよ
っていうか21世紀のOCamlが欲しかった(OCamlはそんなに古い言語ではないけど) Rustほど丁寧なエラーメッセージ出してくれる言語もないでしょ
そういうのを捨てて速度を取った言語とは比べられない > Rustほど丁寧なエラーメッセージ
冗談だよな? って思ったけど最近のは丁寧なのかな Vってvoltのことか。あれgoに毛が生えた程度の言語よ。
>>457
今のはコマンドプロンプトのバッファが足らなくなるくらい丁寧だけど
答えそのものを教えてくるから書いたコードがだめな理由が初学者に理解できないのは変わらないと思う。 >>449
どうググるとそれ出てくるの?
「volt プログラミング言語」でググって出てくるのこれなんだけど
Volt Programming Language ・ GitHub
https://github.com/VoltLang
http://www.volt-lang.org/ 大体はGoとかと一緒で言語名+langで検索するのがいいんじゃない?
四文字もあって他の情報が上に来るのも珍しいが ■ このスレッドは過去ログ倉庫に格納されています