◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Rust Part5 ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1518347244/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2018/02/11(日) 20:07:24.54ID:ri7dLd1B
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

前スレ
http://2chb.net/r/tech/1507970294/
2デフォルトの名無しさん
2018/02/11(日) 20:11:06.61ID:ri7dLd1B
>>1補足

関連スレ
プログラミング言語 Rust 4【ワッチョイ】
http://2chb.net/r/tech/1514107621/

スレタイと本文を簡素にして、リンクを追加
ワッチョイの有無は話し合って決めてくれ
3デフォルトの名無しさん
2018/02/11(日) 20:19:50.66ID:Bow9SKgP
ワッチョイが怖いアンチ専用スレ
4デフォルトの名無しさん
2018/02/11(日) 20:23:24.61ID:A30L58fq
乱造されたくそ言語のひとつ
5デフォルトの名無しさん
2018/02/11(日) 20:50:40.14ID:o0/wxHz/
真正キチガイとそのとりまき専用スレです。
6デフォルトの名無しさん
2018/02/11(日) 20:51:16.50ID:o0/wxHz/
本スレ

プログラミング言語 Rust 4【ワッチョイ】
http://2chb.net/r/tech/1514107621/
7デフォルトの名無しさん
2018/02/16(金) 23:17:53.59ID:Amur4Tpf
Announcing Rust 1.24
https://blog.rust-lang.org/2018/02/15/Rust-1.24.html
8デフォルトの名無しさん
2018/02/17(土) 00:41:40.05ID:hqbRKzvj
http://wolfbash.hateblo.jp/entry/2017/07/30/193412
やはりRustはクソの言語未満
良識ある人はきちんとわかっている
9デフォルトの名無しさん
2018/02/17(土) 02:03:04.39ID:E39jLpI9
>>8
このブログが良識のある人の記事に見えるってのはある意味すごいと思う。
マジで言ってんの?ネタじゃなかったから単なるバカだよ?
Nimやったことないんだけど、このブログ書いた奴のせいで
俺の中でのNimへの風評被害が超激しいんだけど。
10デフォルトの名無しさん
2018/02/17(土) 20:05:16.72ID:7f4EmjrX
>>8
ネタにマジレスしてるはてな民多くてワラタ
2chもはてブも変わらねえな
インターネットはこうでなきゃな
11デフォルトの名無しさん
2018/02/17(土) 23:24:31.02ID:kWt1jk5L
>>9
正しくRustとNimを比較してRustにいいとこなどないと論理的に談断じてる
そこまで言うなら反論記事よろ

>>10
マジレスも何も事実じゃん
12デフォルトの名無しさん
2018/02/17(土) 23:54:44.59ID:J1S1NncJ
金子勝とかNimキチガイとかrustアンチするにしても筋悪すぎるしアンチを装った信者の犯行では
13デフォルトの名無しさん
2018/02/18(日) 09:48:13.72ID:KxaRPyjO
Nimおじさんの布教の熱意は見習いたい
Rustオタは身内で盛り上がってるだけだからな
14デフォルトの名無しさん
2018/02/18(日) 10:06:29.06ID:rF0gbaqf
ここまで理論的な反論なし
まあできないんだろうね。言語未満Rust
15デフォルトの名無しさん
2018/02/18(日) 10:10:11.91ID:rF0gbaqf
Nimとの対比でRustは言語未満のゴミだと暴かれている上に
それを布教してるやつらは金子先生の鋭い指摘で詐欺集団だと暴かれているのに
信者は人格攻撃して矛先を反らすだけ

よっぽど反論できなくて悔しいんだろうね
16デフォルトの名無しさん
2018/02/18(日) 13:34:10.14ID:MGQ/Ou+a
悔しいんじゃなくてバカらしい。
あと、書いたところでこっちにメリットがない。
具体的なメリットを提示してくれるなら書くかも。
反論記事なら雑だけど一応あった。
書いた後であまりのバカらしさに自ら記事を消したらしい。
アーカイブは残ってるから、それでも読んでろ。
http://ubnt-intrepid.hatenablog.com/entry/2017/10/03/135742
17デフォルトの名無しさん
2018/02/18(日) 15:07:59.73ID:yl4ANYcz
Rustはプログラミング言語未満というのは >>8 の意見だと思うけどプログラミング言語の定義が曖昧すぎて反論のしようがないしそれで勝利宣言されてもね
18デフォルトの名無しさん
2018/02/18(日) 16:22:00.83ID:29WPmCUu
>>16
書いたらモジラからお給金出るでしょ

>>17
意味のあるプログラム書こうとしたら
とたんに借用とかでコンパイル通らなくなってまともにプログラミング出来ないものがプログラミング言語と言えるのか?
まあMalbolgeやBrainfuckがプログラミング言語と呼べるキ◎ガイならRustもプログラミング言語かもね
19デフォルトの名無しさん
2018/02/18(日) 16:23:51.22ID:29WPmCUu
あとその人か反論記事消したのも
本当はRustが使い物にならないことを察してしまったけど
それを言うと信者に突撃されるからぼかして消しただけでしょ
表向きの理由で全消しするのは不自然だから
20デフォルトの名無しさん
2018/02/18(日) 17:02:55.71ID:AoWf7oui
ほんそれ
21デフォルトの名無しさん
2018/02/18(日) 17:24:33.90ID:rbmqjGBD
あぁ、Rustのネガキャンするとお給料がでるのか……
22デフォルトの名無しさん
2018/02/18(日) 17:25:09.88ID:Cm7UHG2I
提灯記事書いてモジラからお金もらうにはどうしたらよいのですか?
23デフォルトの名無しさん
2018/02/18(日) 17:41:48.25ID:oGsannLj
「俺がコンパイル通せるコード書けないからRustは糞」って主張で首尾一貫してるところはすごい
24デフォルトの名無しさん
2018/02/18(日) 17:44:53.63ID:oGsannLj
それとも世のRustで書かれてるアプリケーションは実はすべて別の言語で書かれているという主張だろうか
25デフォルトの名無しさん
2018/02/18(日) 17:45:28.72ID:oGsannLj
はたまたRustで書かれてるものはどんなものであれまともなものとは認めないかな
26デフォルトの名無しさん
2018/02/18(日) 18:02:38.46ID:29WPmCUu
2番目が正解だな
27デフォルトの名無しさん
2018/02/18(日) 18:06:09.75ID:29WPmCUu
オープンソースでRustで書かれてるやつも
なんとかコンパイルだけ通したような
保守性も何もない個人が脳トレで書いたようなものばかり
まともな製品として書かれたコードはGithubにも見つからなかったぞ

ソースコード公開してるものがそうなんだから
企業がRust使ってると称するなにかは実際にはRustなんて使っておらず
適当な別の言語で書いてRust使ってると言えばモジラから金が出る
そういう仕組みと考えるのが自然な訳だ
28デフォルトの名無しさん
2018/02/18(日) 18:36:35.71ID:MGQ/Ou+a
で、このアーカイブ記事に対する論理的な反論はできないと。
あと、GitHubのまともなコードが見つからなかったって点も
どの辺がまともじゃないのかについてはコードでは示せないと。
それで自分の言葉に説得力があると思ってるのが不思議でならないんだが。
あと、俺にも「モジラからお金もらう方法」を教えて。
ホントにもらえるんだったら絶対に反論記事書いてあげるから。
29デフォルトの名無しさん
2018/02/18(日) 18:45:26.87ID:rbmqjGBD
ぐぇ crate uuid のインターフェースが換わりよった
ParseError が std::error::Error を impl しなくなったのは何故だ……
30デフォルトの名無しさん
2018/02/18(日) 18:52:54.71ID:29WPmCUu
>>28
なんで取り下げられた記事に反論しないといけないの?
取り下げたってことは「この記事は間違いだった」というメッセージでしょ

モジラから金貰う方法とか俺に聞くなよ
モジラのページにある自称Rust使ってる企業に聞いてくれよ
31デフォルトの名無しさん
2018/02/18(日) 18:54:29.18ID:29WPmCUu
>>29
な。Rustなんて使うからそうなる
一貫したインターフェースを提供することすらできん言語だ
32デフォルトの名無しさん
2018/02/18(日) 18:59:05.94ID:XQEgm6DO
取り下げた理由も書いてあるのに読まずに決めてかかってるのほんとブレねぇな
33デフォルトの名無しさん
2018/02/18(日) 19:01:18.09ID:yl4ANYcz
まともな製品という言い方もそうだけどまともかどうかの判断基準は「俺が気に入るかどうか」以上のものがあるように読みとれなかったので議論にならない
論理的な会話ができてないのはどちらなんだか
34デフォルトの名無しさん
2018/02/18(日) 19:03:55.06ID:rbmqjGBD
>>31
レスしてもらったのはありがたいが
俺はお前さんから見ればRust信者だわ すまん

元よりどんな言語使ってもインターフェース変更はある
今回は、追従する作業に五分も掛からんかった
後はテスト流して終わり

インターフェースの変更が出来ないのを理由に
開発が鈍化されるよりマシだと思うよ
35デフォルトの名無しさん
2018/02/18(日) 19:04:52.12ID:29WPmCUu
クソな例挙げようと思ったが挙げるまでもなく>>29が素晴らしい例を出してくれたな

Nimの人のブログにもあったが、ロジックと関係ないスコープ切りが必要なせいでコードがスパゲッティになるとか、
ハッシュテーブルと所有権がコンフリクトして動的計画法が書けないとか
所有権のせいでそもそも循環グラフ書けないとか
いくらでもクソな所出してやれるが?
36デフォルトの名無しさん
2018/02/18(日) 19:09:06.24ID:29WPmCUu
それ以上に、難解すぎてロジックと関係ないコード上の手入れが膨れ上がって
結果ロジックにバグが増えたりインターフェイスの非互換が発生したりするんだよ
だから致命的に壊れた言語って言ってる
37デフォルトの名無しさん
2018/02/18(日) 19:16:07.43ID:29WPmCUu
>>32
だから信者からの突撃回避だろってそれ
38デフォルトの名無しさん
2018/02/18(日) 19:35:38.35ID:1PPXAZA8
反論ブログの人が今でもRust書いてるのも、アイコンがRustのマスコットキャラなのも信者の突撃回避なのですね
Nimのブログ記事にブコメしてるのもみんな信者かMozillaの工作員なんですね
39デフォルトの名無しさん
2018/02/18(日) 19:38:46.94ID:yl4ANYcz
コンパイラが理解できない所有権の問題がある場合はunsafeというescape hatchがあってプログラマの責任でコードが書けるようになっている
これはすごく実用的な割り切りだと思うんだけど>>35はまた意見が違いそう
40デフォルトの名無しさん
2018/02/18(日) 19:44:23.34ID:yl4ANYcz
コンパイラが賢くあるべきなのか、コードを書く側が賢くあるべきかとい二つの考え方があって
>>35は後者、Rustは前者の立場をとっていて単純に趣味に合わないだけなんだと思うが
41デフォルトの名無しさん
2018/02/18(日) 20:00:00.93ID:aEar2ian
比較対象にされてるNimはまともなプログラミング言語とのことで、まともな言語とはまともな製品を作れる言語とのことらしいが
そうなるとNimはRust以上に普及しててまともな製品がリリースされていないと矛盾しないか
42デフォルトの名無しさん
2018/02/18(日) 20:06:17.02ID:29WPmCUu
>>41
個人で作ってる言語と
国際的詐欺会社がバックにいるのとじゃどうしても個人が負けるわ
43デフォルトの名無しさん
2018/02/18(日) 20:10:47.25ID:yl4ANYcz
Mozillaが詐欺企業なんて聞いたことないけどどういう罪状があるのか詳しく教えて欲しい
44デフォルトの名無しさん
2018/02/18(日) 20:28:16.57ID:FZoaWpvb
こんだけアンチが常駐する言語スレも珍しい
PHPより酷く感じる
45デフォルトの名無しさん
2018/02/18(日) 20:33:28.85ID:DdrYOgdV
スレ人口少ないのもあるが常駐されたところで同じ主張繰り返すだけで特に実害がないからでは
別スレもあるし
46デフォルトの名無しさん
2018/02/18(日) 20:38:05.10ID:yl4ANYcz
ほんとうにMozillaが金をばらまいてRustを普及させようとしているなら断る人もいるはずで
世界的にやっているにもかかわらずそのことに言及してるのがこのスレにいる一人だけという時点で信憑性も何もないというのがね
47デフォルトの名無しさん
2018/02/18(日) 20:38:58.59ID:yl4ANYcz
言語について批判できるんだから変なMozilla批判は引っ込めたほうが説得力持たせられるのに
もったいない
48デフォルトの名無しさん
2018/02/18(日) 20:55:59.22ID:29WPmCUu
札束でぶん殴られて断れないような、そういう相手を選んでるだろうしな
あのMercurialもGitにボロ負けしてるから、資金で殴れば下るだろうって狙われたんだろう
49デフォルトの名無しさん
2018/02/18(日) 21:07:21.89ID:MGQ/Ou+a
>>30
お前しか「モジラに金もらってる」なんて言ってる奴がいないんだからお前に聞くしかないだろ?
バカなの?脳味噌に草でも生えてんの?
あとGitHubの件はスルー?コード例はやっぱり出せないの?
動的計画法はRustじゃ書いたことないから分からんけども、書けないのはお前だけじゃないの?
「書けない部分を具体的にコード例で示して」毎回言ってるよね?
「同じことを何度も言わせるな」って注意されたことないの?今注意したからもう同じこと言わせないでね。
循環参照についてはRcとWeak使えば書ける。可変にしたければさらにRefCell使えばいい。
それも何度も言ってるよね?ボケてんの?草以外に花も咲いてそうだな。
RcやRefCellが気に入らんならお前とはスタイルが合わないってだけの話だ。去ね。
50デフォルトの名無しさん
2018/02/18(日) 21:18:37.37ID:MGQ/Ou+a
あと最悪、動的計画法や循環参照がお前に書けなかったとしても、
書けてるやつのライブラリを使えばいいだけの話では?
自分で書くよりまずライブラリを探す。今の時代はこれが常識だろ?
車輪の再開発は勉強するときだけやってればいいんだよ。
51デフォルトの名無しさん
2018/02/18(日) 21:23:52.35ID:29WPmCUu
今まで触れずにおいてやったのにそこまで言われたから言うけど
「書けないもの」の「ソースコード用意しろ」ってひどい矛盾したこといってるの分かってます工作員さん?
52デフォルトの名無しさん
2018/02/18(日) 21:27:56.00ID:yl4ANYcz
コンパイルが通らないソースコードなら書けるよね
53デフォルトの名無しさん
2018/02/18(日) 21:28:34.77ID:yl4ANYcz
どうせ次はRustは触るのも汚らわしいから書かないとか言うんだろうな
54デフォルトの名無しさん
2018/02/18(日) 21:29:02.25ID:MGQ/Ou+a
Rustでコンパイルエラーしてるソースコードを
コンパイルエラーした状態のままでいいから見せろって言ってるの。
あと、「C(他言語でも可)だとこう書けるのに。。。」っていうソースも載ってればベスト。
分かってもらえます?
55デフォルトの名無しさん
2018/02/18(日) 21:30:40.70ID:yl4ANYcz
borrow checkerについて文句言ってるんだからせめて型検査くらいは通ったソースにしてくださいね
56デフォルトの名無しさん
2018/02/18(日) 21:39:58.74ID:29WPmCUu
http://play.integer32.com/?gist=a352230e08bc0a76fb5f116bd3c7abf4&;version=stable

これで満足?
57デフォルトの名無しさん
2018/02/18(日) 21:49:04.52ID:yl4ANYcz
http://play.integer32.com/?gist=97a7043af5e6ae63f81bc41b2eccc945&;version=stable
58デフォルトの名無しさん
2018/02/18(日) 21:50:32.62ID:yl4ANYcz
HashMapのエントリーへのポインタは新しいエントリー追加したらreallocなどが呼ばれて無効になるかもしれないので取り回すのがそもそも間違い
59デフォルトの名無しさん
2018/02/18(日) 21:52:54.02ID:MGQ/Ou+a
ちゃんとソースコード読みこんでないから何がしたいのよく理解してないけど
取り合えずコンパイル通すだけならすぐ出来たよ。
http://play.integer32.com/?gist=9333d5344adb9cdf5ef8292a20ec6c24&;version=stable
60デフォルトの名無しさん
2018/02/18(日) 21:56:25.20ID:yl4ANYcz
NLL有効にしたら元のコードでも通った

http://play.integer32.com/?version=nightly&;mode=debug
61デフォルトの名無しさん
2018/02/18(日) 21:57:12.95ID:rbmqjGBD
俺はスコープ切る方が好きかな~
http://play.integer32.com/?gist=e73044b8a25fa1c2403ee1ccb74356f6&;version=stable
62デフォルトの名無しさん
2018/02/18(日) 21:57:26.76ID:yl4ANYcz
URL間違えた
http://play.integer32.com/?gist=d9f081dd40e2e0d06e224dc0e20ee41c&;version=nightly
63デフォルトの名無しさん
2018/02/18(日) 22:00:17.99ID:xYBf7ssj
瞬殺されてて草
64デフォルトの名無しさん
2018/02/18(日) 22:21:47.77ID:xYBf7ssj
この流れ見ると、NLLはRustのハードルを思った以上に下げるのでは?と思わずにはいられない
65デフォルトの名無しさん
2018/02/18(日) 22:48:08.85ID:MGQ/Ou+a
その程度のエラーで投げるやつは少数派なんじゃ。。。とおれは思うけど。
まぁ、それでハードルが下がるのならそっちのほう良いとは思う。
けど、その程度で前に進めなくなるならすぐに別の問題にもぶち当たってやっぱり投げちゃうと思うよ。
そういう奴らはRustはともかく、多分C, C++でも自分で書いたバグに潰されると思う。
結局GC付きの言語でしか書けないんじゃない?
念のため言っておくけど、GC付きの言語を批判する意図はないよ。
おれTypeScript好きだし、Goも嫌いじゃない。
66デフォルトの名無しさん
2018/02/18(日) 22:57:58.52ID:xYBf7ssj
確かにここが解決しても型合わせとかで匙投げそうだな……
型の方はScalaとかSwiftとか別の言語で似たようなのがあるから参考にできる文献多そうだけど
67デフォルトの名無しさん
2018/02/18(日) 23:36:51.46ID:MGQ/Ou+a
ジェネリックとトレイト境界の辺りとか最初は結構苦労した記憶がある。
特にfuturesクレートを初めて読んだときは?!??!?ってなった。
Rustは良い言語だけれど「難解」というところだけは否定できない。
そういえば、結局「モジラからお金もらう」方法教えてくれなかったなぁ。
お金欲しいのに
68デフォルトの名無しさん
2018/02/19(月) 00:25:45.37ID:1MkUvafw
ちゃんとしたもの作れるわけないだろという主張してたのが昔は複数いたと思うが
Quantumが出たあたりで流石に取り下げたようだが
モジラは詐欺会社と言い張る一人だけが猛烈に頑張ってる
69デフォルトの名無しさん
2018/02/19(月) 01:40:11.21ID:Lpico4kN
>>68
モーレツに墓穴掘ってるけどね
70デフォルトの名無しさん
2018/02/19(月) 10:56:52.97ID:RCvG8f4a
安全性を最大限に気にしたい心配性な人向けの言語だよRust
そういう人たちはC/C++のコーディングで余計なことまで心配しすぎてストレスかかってるんだよ
かわいそうな人たちなんだよ
71デフォルトの名無しさん
2018/02/19(月) 12:11:45.20ID:SrM6uAzC
心配しないと鼻から悪魔が出るのがC/C++なので心配しすぎということはない
72デフォルトの名無しさん
2018/02/19(月) 20:47:53.37ID:Lpico4kN
例のアンチだが動的計画法がどうだ循環参照がどうだって騒いでたから
てっきりhtml5everくらい複雑なコード組もうとして悩んでたのかと思ってたけど
まさかのフィボナッチ数列でつまづいていたとは予想外だったわ

そういえば今年のstackoverflowのアンケート結果っていつ出るんだろう?
そもそも毎年いつ頃出てるのか知らないんだよね
これでRustが愛され言語ランキング1位から順位落としてたら
また「ついにクソ言語未満のボロが出てきたな」とか騒ぎだすんだぜきっと
73デフォルトの名無しさん
2018/02/19(月) 22:42:50.63ID:soT5kWv3
前スレで、別のランキングでRustの順位が10位圏内に入ってなかったことについて
「工作ブーストが切れたな」とか言ってたからそういう方向になるんじゃね
74デフォルトの名無しさん
2018/02/20(火) 22:57:20.29ID:fTmZl11b
Rustが、コードのスタイルガイド「Rust Style Guide」と自動整形ツールを導入する理由。
コードをめぐる議論を省き、メンタルの負担を減らし、プログラマを参加しやすくする
http://www.publickey1.jp/blog/18/rustrust_style_guide.html
75デフォルトの名無しさん
2018/02/21(水) 00:44:44.35ID:s9stOBAB
unsafe使えば書けるだろ
C++みたいに全部unsafeな言語よりは安全
76デフォルトの名無しさん
2018/02/21(水) 13:18:06.33ID:/K+AUWe/
C++ならゲーム
C#ならWindowsフォームアプリケーション
PHPならWebアプリケーション
Pythonなら機械学習

Rustは?
77デフォルトの名無しさん
2018/02/21(水) 19:19:52.15ID:ariB2x93
ここはアンチが立てたキチガイ隔離スレです。
キチガイ以外書き込まないでね
78デフォルトの名無しさん
2018/02/21(水) 20:00:01.69ID:RN4nUagC
本スレが過疎ってレベルじゃないし実質こっちが本スレだろ
隔離()スレに勢いで負ける言語があるらしい
79デフォルトの名無しさん
2018/02/21(水) 20:01:45.70ID:ariB2x93
まあそうなんだけどね
80デフォルトの名無しさん
2018/02/21(水) 21:13:09.57ID:wTdoLSiT
ほんとID:yl4ANYczは戦犯
コンパイルできない厨が最後のコンテンツだったのに…
81デフォルトの名無しさん
2018/02/22(木) 09:08:35.45ID:L3BN3Bsr
いわゆるnewtypeパターンをLLVM IRで見てみると
ごく単純なコードで使う分には中身の要素に最適化されてるけど、
それ使って配列を作っただけで最適化されなくなる
こんくらいでゼロコスト抽象化とか言ってるの?

typeでは新しい型作れないし、
結局新しい効率的な型を作る方法さえないんだな
82デフォルトの名無しさん
2018/02/22(木) 09:11:43.41ID:3phG5Adg
私にも敵が視える
83デフォルトの名無しさん
2018/02/22(木) 12:12:42.57ID:rPAqV5nw
Rustで書くと実行時のメモリ使用量が増える感じは確かにある
84デフォルトの名無しさん
2018/02/22(木) 12:12:50.46ID:nEiXxHSj
>>81
トレイトの特殊化でも無理?
85デフォルトの名無しさん
2018/02/22(木) 12:45:10.40ID:ETY6aWa8
バグかもしれないからissue立てたら
86デフォルトの名無しさん
2018/02/22(木) 13:46:42.12ID:H839Tp+8
>>81
ゼロコスト抽象化はトレイトやジェネリクスを言っててnewtypeパターンは関係ないと思うゾ


Cに比べたらC++もRustもGoもランタイムの分だけメモリ使用量は増えるよね
C++にはランタイム存在しないとか大笑いなギャグを素で言う輩は知らん
87デフォルトの名無しさん
2018/02/22(木) 17:36:33.79ID:z8mO3my1
その理屈で言うとlibcもランタイムになりそう
88デフォルトの名無しさん
2018/02/24(土) 01:22:38.50ID:it5yKGst
「Rust 1.24」リリース、コード整形ツール「rustfmt」をプレビュー導入 | OSDN Magazine
https://mag.osdn.jp/18/02/17/163000
> ビルドの速度は改善するが、出力されたバイナリの実行速度は少し遅くなるとしている。
89デフォルトの名無しさん
2018/02/24(土) 05:12:18.52ID:sKnrWNZ+
むしろ今まで並列コンパイルをしていなかったのかという驚きがね...
型推論とかボローチェッカーとか大変だろうしと思ってたが、並列コンパイルで早くなるのは助かるよね
90デフォルトの名無しさん
2018/02/24(土) 12:58:21.72ID:xVNPO9ZK
コンパイルを速くするためにプログラムの速度を犠牲にする
自称低級言語があるらしい
91デフォルトの名無しさん
2018/02/24(土) 13:22:49.17ID:F+bRKUHR
言語じゃなくコンパイラの話だぞ
速度を求めたリリースビルドは並列なしに切り替えられる低級調製可能なコンパイラすごいよね(棒読み
92デフォルトの名無しさん
2018/02/24(土) 14:20:25.52ID:Wx4opHQO
言語仕様には興味あるけど実装は興味ありませんって奇特な方には人気出そうな言語だね。
93デフォルトの名無しさん
2018/02/24(土) 14:24:58.18ID:2/pmmfzJ
低レイヤ書く人は仕様より吐かれるバイトコードの方にしか興味ないから
完全にターゲティングに失敗してるよなこの言語
94デフォルトの名無しさん
2018/02/24(土) 15:42:04.98ID:F+bRKUHR
むしろコンパイルを通すことが難しくても効率的で安全なマシンコードを出力して欲しい奇特な人向けだけどな
性能無視して生産効率だけを求めるならボローチェッカーとかunsafeとかトレイトとか面倒な言語仕様はマジ辛い

ただ緩く書きたいだけならSwiftとかGoの方が絶対良いよな
ランタイムが馬鹿でかかろうが、goroutineが冗長コストだろうが、言語仕様が楽なそれらは生産効率が断然良い
95デフォルトの名無しさん
2018/02/24(土) 16:20:16.21ID:VjJ87j7v
安全はともかく、Rustが効率的なマシンコードを出力するというのは同意しかねる
96デフォルトの名無しさん
2018/02/24(土) 22:13:15.47ID:Z3ajdh1I
やはりD言語が最強か
97デフォルトの名無しさん
2018/02/27(火) 14:30:57.99ID:b6IHds+I
ソースとマシンコードが一対一になる言語は安心感あるな
98デフォルトの名無しさん
2018/02/27(火) 14:35:36.74ID:UR+NQY+Q
やはりアセンブラか
99デフォルトの名無しさん
2018/02/27(火) 14:36:01.06ID:MLnedvVc
【UFO】  山本太郎も横浜で遭遇  ≪"◇″型の発光体≫  世界にテレパシー放送  【大宣言】
http://2chb.net/r/liveplus/1519704223/l50
100デフォルトの名無しさん
2018/03/01(木) 00:41:00.21
【お知らせ】Packt出版より Network Programming with Rust が発売されました。
101デフォルトの名無しさん
2018/03/05(月) 15:59:00.63ID:iGOVMObf
https://play.rust-lang.org/?gist=0bed0aa16c0679665fee05cc6bfda41f&;version=nightly
fn nanka() -> Option<u32>{
println!("nanka called");
None
}
fn nanka2() -> Option<u32>{
println!("nanka2 called");
None
}
fn nanka3() -> Option<u32>{
println!("nanka3 called");
None
}

fn main() {
match (nanka(), nanka2(), nanka3()){
(None, _, _) => println!("nanka ha None"),
(Some(_), Some(_), Some(_)) => println!("some"),
(_, _, _) => println!("else")
}
}

nanka2, nanka3が呼ばれなくて困る!って副作用があるパターンぐらいじゃないですか?
nanka1がNoneと判定した時点ですぐprintしてくれないものでしょうか
102デフォルトの名無しさん
2018/03/05(月) 19:46:36.35ID:S3T8EfYp
println!("nanka2 called"); とか副作用あるよね
103デフォルトの名無しさん
2018/03/05(月) 21:01:55.89ID:YH1rjFLX
まさに副作用あって呼ばれなきゃ困るパターン書いてて草
104デフォルトの名無しさん
2018/03/05(月) 21:44:52.21ID:rDxXu9uq
遅延評価の言語ではないから言語仕様的に全部評価することが保証されてるからなぁ
副作用なくて同じcrate内に処理があるなら最適化で消えるのでは
105デフォルトの名無しさん
2018/03/07(水) 19:29:12.10ID:LRCrToXv
横着してたから気づかなかった…

>>104
https://play.rust-lang.org/?gist=548477e609761c03d062880ceebec28a&;version=stable
MIR見る限りあるっぽいです(これ副作用ないですよね?)
106デフォルトの名無しさん
2018/03/07(水) 21:27:53.74ID:VXG6nm0Z
良く分からないけどReleaseにしてASM見ると消えてるみたい
MIRに対する最適化は現時点ではそれほどやられてなさそう
107デフォルトの名無しさん
2018/03/07(水) 21:51:00.14ID:LRCrToXv
>>106
Debugなのを忘れた状態で見てcall nanka2があったので駄目かと思っていましたが
Releaseだと消えるようですね、すいません
108デフォルトの名無しさん
2018/03/07(水) 22:06:37.97ID:5W30026P
言語仕様で消えるってどっか書いてある?探したけど見つからんかった
109デフォルトの名無しさん
2018/03/07(水) 22:42:40.55ID:MkNIh69G
rust推進派のtanakhがrustのダメ出しを始めた

https://twitter.com/tanakh
110デフォルトの名無しさん
2018/03/08(木) 07:35:45.52ID:VN6/Zkeb
会社大変だから許してあげよう
111デフォルトの名無しさん
2018/03/08(木) 09:01:09.79ID:SDzhQ04b
>>108
最適化の話だから言語仕様では決められてないと思う
112デフォルトの名無しさん
2018/03/08(木) 13:04:24.48ID:XQ95i3sC
あのtanakhですら擁護できなくなってきたRustとかいう何か
やっぱクソ言語じゃん
113デフォルトの名無しさん
2018/03/08(木) 13:05:40.24ID:FYuhJ3+Z
逆にたなこふ氏が好きな言語って何だよ
Haskellくらいだろ
114デフォルトの名無しさん
2018/03/08(木) 13:10:19.32ID:FYuhJ3+Z
ほら
https://twitter.com/tanakh/status/907645555467104256
115デフォルトの名無しさん
2018/03/08(木) 13:42:39.37ID:XQ95i3sC
いくつか言語……?ってなるのが混じってるな
116デフォルトの名無しさん
2018/03/08(木) 17:46:17.85ID:3H4xAb5h
>>114
Rust評価高いくてGoは糞って評価だな。
117デフォルトの名無しさん
2018/03/08(木) 20:48:12.88ID:Qr0iRnUQ
絶対一緒に仕事したくないようなコード書きそうな人柄なのがよくわかるのはいいことだね。
118デフォルトの名無しさん
2018/03/09(金) 02:34:49.09ID:C5IjE5Kn
スタック使うかヒープ使うか考えなきゃいけないしマジで低級言語だなRust
119デフォルトの名無しさん
2018/03/09(金) 09:09:56.97ID:MtNghMxY
低級プログラミング言語というときの低級は必ずしも蔑む意味とはならない
120デフォルトの名無しさん
2018/03/09(金) 12:35:50.11ID:Awo4Q9T/
>>118は別に蔑んでないと思うが…
121デフォルトの名無しさん
2018/03/09(金) 12:41:07.31ID:X+hGjMr5
118が低級
122デフォルトの名無しさん
2018/03/09(金) 13:10:31.19ID:Awo4Q9T/
どう読んでも>>118は事実を言っただけでrustを誉めても貶してもいないと思うが…
「CはPythonよりも低級言語」これC言語を蔑んでる意味で取るアホなんているの?
123デフォルトの名無しさん
2018/03/09(金) 17:25:20.32ID:4MawrcZA
初心者は大体そのように取るよ
124デフォルトの名無しさん
2018/03/09(金) 17:29:38.88ID:Oir5mzi3
はいはいわかったわかった
125デフォルトの名無しさん
2018/03/09(金) 18:10:23.86ID:TjQY2cN8
枯れてる言われて古いんだなと思ってそう
126デフォルトの名無しさん
2018/03/10(土) 02:47:36.63ID:RGnl5SiL
高級言語のcobol最強ですかね
127デフォルトの名無しさん
2018/03/10(土) 04:12:59.75ID:YINDWKAW
蔑んでいるように見えるのはあなた自身が心の奥底でRustを蔑んでいるのです
128デフォルトの名無しさん
2018/03/10(土) 07:06:56.73ID:PbOmOUXH
はいはいわかったわかった
129デフォルトの名無しさん
2018/03/11(日) 03:31:49.17ID:UKNdLJMW
1つのstructにいっぱい詰め込むと初期化が面倒なんですが
130デフォルトの名無しさん
2018/03/11(日) 04:15:48.10ID:4b/1QsDB
new()用意しとけ
131デフォルトの名無しさん
2018/03/11(日) 13:22:28.79ID:vP34sga0
derive(Default)使えば
132デフォルトの名無しさん
2018/03/11(日) 13:57:51.99ID:91F3yKR+
よくインターネット上の広告で半年でエンジニアに!みたいなのあるけど、インターネット不得手、プログラム未経験者が真剣に半年頑張れば本当にそんなこと可能なんですか?
可能ならその理由はなんでしょう?人材が足りていないというのは存じ上げていますが
133デフォルトの名無しさん
2018/03/11(日) 13:58:22.81ID:91F3yKR+
ごめんなさい誤爆しました
134デフォルトの名無しさん
2018/03/11(日) 14:13:04.94ID:zWe+i43K
>>132
言われたことやるだけなら可能じゃね?
135デフォルトの名無しさん
2018/03/18(日) 21:30:14.47ID:jQGugCpv
>>8
今更だけどこれ書いた奴もブコメした奴も誰一人rustまともに使ったこと無さそうで草
136デフォルトの名無しさん
2018/03/19(月) 15:39:12.03ID:dH7nnHk9
>>135
少なくとも書いた奴はまともに使ってないだろうな
matchの仕様が理解できないからって仕様バグと決めつけてるアホだし…
137デフォルトの名無しさん
2018/03/19(月) 19:45:41.61ID:ahbMAcYG
俺の技量不足なんだろうけどmutmut地獄は確かにわかる
138デフォルトの名無しさん
2018/03/19(月) 20:01:00.05ID:dH7nnHk9
>>137
mutが面倒ってのは分からなくはないんだが、かと言ってどうするの?
不変のほうをconstにすると次はconst地獄になるだけだよ
139デフォルトの名無しさん
2018/03/19(月) 20:11:12.51ID:bbBltail
C++erだったのでconst地獄はむしろ慣れてるので歓迎
140デフォルトの名無しさん
2018/03/19(月) 20:37:55.38ID:+FMR/dfx
一方、記述の美しさを重視する Nim では let と var に分けた
141デフォルトの名無しさん
2018/03/19(月) 21:23:39.57ID:dH7nnHk9
Nimは引数を可変にしようとすると下記のようになる。
proc test(x: var string): string =
x = x & " world"
return x

var x = "hello"
let y = test(x)
echo y

関数宣言で引数にvarと書かなきゃ可変にできないんじゃRustとそれほど手間は変わらない
それに、宣言はvarと書かせるクセに呼び出し側がtest(var x)じゃなくてtest(x)となるのが解せない
これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
C++と同じ類の過ちを犯してる
簡潔ではあるかもしれないが全然美しくない(美しいの定義によるが…)

https://play.nim-lang.org/?gist=9e8b6b6059cf8640f6c71fd2075b07c8
142デフォルトの名無しさん
2018/03/19(月) 21:32:11.25ID:dH7nnHk9
あとRustの場合はそもそもmutは出来るだけ使うなという方針だから
mutの記述が面倒なのはワザとやってるという点もあるし…
143デフォルトの名無しさん
2018/03/20(火) 08:39:12.91ID:iuzVSye9
なるほど
144デフォルトの名無しさん
2018/03/20(火) 14:11:19.46ID:J0Id73NT
> これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
珍しいご意見ですよね。
145デフォルトの名無しさん
2018/03/20(火) 16:01:11.80ID:/+MVnq9/
>>144
よくよく考えるとRustも呼び出し側にmut付けること自体は必須ではないんだよな
所有権を借用するために大抵は&mutを書かされるってだけで…
渡す変数の型がもともと&mut Tだった場合は書かなくてもいい…
Rustの場合は呼び出し側で&mut書く羽目になる経験が多かったので
俺が勝手に「可変にしたければmutを絶対に書かないといけない」という勘違いをしていただけか…
でも、書かされた方が読むときには分かりやすいので個人的にはこっちの方が好き

俺自身がNimはどうしても好きになれなくて不満点を挙げたつもりが自ら墓穴を掘ってしまった感じだな
一般的にはNimの方がよっぽど簡潔で美しいのかもしれない…
ただ単に俺の感性の方が狂ってるだけっぽいな…
146デフォルトの名無しさん
2018/03/20(火) 16:05:30.99ID:ck80uwiX
そんな珍しくもない気もするが
147デフォルトの名無しさん
2018/03/20(火) 21:24:24.10ID:kx/m1AUo
俺もそんな珍しくもないと思う
148デフォルトの名無しさん
2018/03/20(火) 23:15:30.72ID:RYTCq15b
「変数」が値に名前を付けたイメージに人とメモリ領域に名前を付けたイメージの人と
149デフォルトの名無しさん
2018/03/21(水) 00:20:42.31ID:mtmyqFMA
データがメモリのスタック領域ヒープ領域あるいは別の領域などどこに記憶されるのかという低レベルなことを考慮しながらプログラミングしなきゃならない

変数とは何かと言えば
スタック領域の特定のメモリ番地に名前をつける行為でしかなく

所有権の委譲って何かと思えばそのメモリ番地の名前を変える行為でしかない

クソ
150デフォルトの名無しさん
2018/03/21(水) 21:34:47.63ID:JvyRf7uK
分かりやすい説明だね
151デフォルトの名無しさん
2018/03/23(金) 00:30:01.20ID:DIa3/8ef
GBAのプログラムを書いてみたいな。どうせならRustでやってみるか
ARMポートあったよね。Thumbコードも吐けるのかな

とか思ってググっていたら先人がいた。考えることはみんな一緒かw
152デフォルトの名無しさん
2018/03/23(金) 08:40:36.80ID:yG5SnYrv
Unityが北欧のニートから生まれたって話を聞いて
Rustでゲームエンジン作ればワンチャンあるんじゃないかと思い始めてきた。
153デフォルトの名無しさん
2018/03/23(金) 08:44:26.71ID:0DDzAR5J
気のせい。
154デフォルトの名無しさん
2018/03/23(金) 10:01:19.78ID:+d3L/XtB
あるかもね
155デフォルトの名無しさん
2018/03/24(土) 02:46:18.89ID:Q4O/QWqD
unsafe使い始めたらCのがやっぱ楽じゃね?ってことにすぐなる。
156デフォルトの名無しさん
2018/03/24(土) 07:57:37.67ID:AYaIp/Or
そしてメモリ周りのバグで悩まされた時にやっぱRustで書いときゃ良かったってなる
157デフォルトの名無しさん
2018/03/24(土) 11:41:10.67ID:lA18Hk/y
バグなんてメモリに限ったことじゃないのにね
158デフォルトの名無しさん
2018/03/24(土) 12:51:11.00ID:6E9wdkyi
要因の種類が減るのは良いことだ
159デフォルトの名無しさん
2018/03/24(土) 19:57:38.34ID:Hl/X5tEX
rust未経験者なんだけど、この言語ってweb開発には向いてないの?
goより高度なこと出来るならweb開発も全然苦じゃないように思うんだけど
何かしらweb開発に向いてない要素あんるんかな?
160デフォルトの名無しさん
2018/03/24(土) 20:11:16.11ID:lcHhOSrB
DOMいじれんの?
161デフォルトの名無しさん
2018/03/24(土) 20:22:46.33ID:Hl/X5tEX
ごめん。聞き方がふんわりしてた。
webのバックグラウンドで動いてるrestAPIサーバに向いてない要因は何かあるのかな?
SPAとかマイクロサービスとかの構成でjavaとかgoとかの代わりに成り得るのかなって。
162デフォルトの名無しさん
2018/03/24(土) 20:22:52.79ID:6E9wdkyi
一応WebAssemblyで吐けばRustのコードとJavaScriptのコードを混在出来るけど
軽く触っただけなんでデバッグなどの開発環境の事は未知数
163デフォルトの名無しさん
2018/03/24(土) 20:22:54.62ID:eKuOy/a9
>>160
無理
164デフォルトの名無しさん
2018/03/24(土) 20:25:44.26ID:bGodUaM+
サーバ側でしょ?言語としては代わりになるだろうけどwebに向いてる部分てのが何を指してるかによるんじゃない
165デフォルトの名無しさん
2018/03/24(土) 20:33:09.05ID:Hl/X5tEX
hello world出たからもう初心者と言っても過言ではない。。

>>164
個人的には静的言語ならどれも大差ないと思ってるんだけど、
その方面では全然注目されてないように見えたから何か原因があるのかなって。
166デフォルトの名無しさん
2018/03/24(土) 20:36:37.33ID:6E9wdkyi
>>161
以前Goでサーバーサイド書いたことあって、バイナリ一つデプロイするお手軽さがとにかく良かった

といってもほんとに小機能で、WAFにEcho使って静的ファイル(CSS・画像)とか
レスポンスにDBから引っ張ったJSON返すRESTfulの出来損ないみたいのだけど

開発はWindows、デプロイ先がCentOSだったんだけど、
WindowsでCentOS用のバイナリ吐けるし、プロセスの再起動監視も今はDocker-composeがやってくれてるし(restart: always オプション)

Windowsで開発してPUSH、CIツールがCentOS用にバイナリ吐いて、CentOSではバイナリ受け取ったら
$ docker-compose down && docker-compose up -d --build
叩くだけでデプロイ完了っていう超絶お手軽、もちろんデプロイはAnsibleやItamaeで自動化しても良い
167デフォルトの名無しさん
2018/03/24(土) 20:51:06.97ID:Hl/X5tEX
hello worldが10個出た。

>>166
goのシングルバイナリ良さそうだよね。
全然分かってないんだけど、rustでもちょびっと頑張れば
クロスコンパイルできるって認識なんだけど間違ってるのかな?
168デフォルトの名無しさん
2018/03/24(土) 21:09:10.81ID:6E9wdkyi
Rust経験浅いんで良く分かってない、一応nickelってWAFあるしrustupでコンパイル出来るから土台はあるけど
RustってわりとカジュアルにC製のライブラリをdllとして利用してるからそこが未知数
まあそれらのライブラリを使わなきゃいいんだろうけど
169デフォルトの名無しさん
2018/03/24(土) 21:09:38.20ID:6E9wdkyi
rustupでクロスコンパイル
170デフォルトの名無しさん
2018/03/24(土) 21:17:38.55ID:Hl/X5tEX
FizzBuzz動いたー レベルアップ感ないけど

>>168
そうか。シングルバイナリじゃないとクロスコンパイル先の環境で動かすのは
なかなか大変そうやね。やっぱその分野はgoが強いってことなんね。
171デフォルトの名無しさん
2018/03/24(土) 21:29:23.70ID:LUxFSHaJ
>>165
そういう観点なら学習コストが高いのがじゃくてんだと思う
172デフォルトの名無しさん
2018/03/24(土) 21:45:47.85ID:glWbEBFl
>>165
個人的にはGCありなしの差が大きい気はする。
特にweb系はGCがあって当たり前だから
急にlifetimeとか言われても…ってなりそうな。
C/C++だと結局脳内でlifetime管理してるから
そこの学習コストは相対的には低い。
173デフォルトの名無しさん
2018/03/24(土) 22:12:42.54ID:AYaIp/Or
>>172
おれもGC有り無しはでかい要因だと思う
今までJS, Ruby, PHP, Java辺りしか使うことのなかったWeb屋にとっては
「メモリ管理?なにそれ?おいしいの?」状態だろうし…
174165
2018/03/24(土) 23:05:16.49ID:YaLUXLZ4
>>171
>>172
なるほど。確かにWEB系だと短い納期+人海戦術で乗り切ることも多いから
そういうのには辛そうだね。でも言語仕様的にWEB(の裏のサービス)が不得意という
訳では無さそうだから、細く長くやるようなサービスなら導入もアリっちゃアリという認識でいいのかな。

>>173
そだね。なんにもわからんわw っていうかWEBやっててGCであんまり困ったことないかも知れん。
困ったことがないことに起因して難易度が上がった言語を「使いたいです」って提案するにはちょっと強引さが必要そうやね。



今、初心者用の練習問題やってるんだけどメモリの管理なんて全然出てこない。
みんなどうやってRUSTの勉強してるの?やっぱり何か動くもの作ってみるのが早いかな?
175デフォルトの名無しさん
2018/03/24(土) 23:11:45.93ID:gYQh0+lt
簡単なApp serverならrocketが楽だった
早くstableで動くようになってほしい
176デフォルトの名無しさん
2018/03/24(土) 23:49:05.34ID:AYaIp/Or
>>174
ん?君もしかしてWeb屋なの?
そして「GCなし」ってのがどういう状態かよく分かってない感じ?
C or C++のご経験は?
177デフォルトの名無しさん
2018/03/24(土) 23:59:12.17ID:Z79Bg+7E
GCは甘え。
プロなら自分で管理するべき。
178デフォルトの名無しさん
2018/03/25(日) 01:19:49.91ID:8WSI8ZZL
GC無い言語でもファイルディスクリプタの解放は自前でする必要あるしリークの根幹はどっちも変わらんと思うけどな
むしろGC無い言語の方が循環参照の時の解放が面倒、C++でもweak_ptr使う必要出てきたり
179デフォルトの名無しさん
2018/03/25(日) 01:28:22.61ID:4Rittzre
c++はやっぱraiiが便利。
gcあったって結局outofmemoryerrorになるなからなぁ。
だったらrustのようにコンパイラが所有権やライフタイムをチェックしてくれるのはいいと思う。
けど学習障壁高過ぎとも思う。
180デフォルトの名無しさん
2018/03/25(日) 01:43:12.83ID:U5SlEUJl
Nodeのメモリーリークはみんな苦戦してるみたいだけど。
181デフォルトの名無しさん
2018/03/25(日) 01:51:32.26ID:8WSI8ZZL
Nodeは全部グローバル変数にするのが悪いんや
182デフォルトの名無しさん
2018/03/25(日) 02:05:56.01ID:BP/bYIjb
>>180, >>181
Nodeはよくメモリリークが問題とか言われてるけど原因はそこなの?
グローバル変数を平気で乱用するほど皆バカなの?
イベントハンドラの解除忘れとかじゃないの?
183デフォルトの名無しさん
2018/03/25(日) 02:09:49.87ID:U5SlEUJl
エラーにならないことが多すぎる。
忖度しすぎ言語の称号を与えたい。
184デフォルトの名無しさん
2018/03/25(日) 02:10:42.60ID:U5SlEUJl
Nodeの問題点を一言でいえば、Javascript。
185デフォルトの名無しさん
2018/03/25(日) 03:01:01.34ID:wEE2niQx
>>174
コストかけられるなら規模の大小関わらず大アリだよ
186174
2018/03/25(日) 08:53:35.72ID:tMB2K7Zl
>>175
ありがと。ちょっと試してみる。

>>176
ぽんこつWEB系IT土方だよ。javaとjavascriptくらいしかやってない。
javaでは走ってるGCがrustだと黒魔術によって必要ないっていう認識やで。

>>185
そうか。大アリか。ありがと。
187デフォルトの名無しさん
2018/03/25(日) 09:17:52.51ID:2sZ1RJA+
>>182
イベントハンドラ解除は他言語でも明示的に書く必要ある
だけどクラスのデストラクタ・ファイナライザに書いといて各スコープで変数の寿命をちゃんと管理するコーディングの基本を守ってるだけで問題ないと言える
ここはRAII使えるC++やRustが最強、なんせ何も書かなくてもスコープから外れたらそれぞれデストラクタ・Dropを呼んでくれるんだし
次点でC#のDisposeとusingなどの専用構文、Javaはtry..finallyあるから及第点

でもグローバル変数だとそんなの働かない、プログラマが仕様とにらめっこしながらリークに気を使わないといけない、めんどい
188デフォルトの名無しさん
2018/03/25(日) 10:33:04.02ID:BP/bYIjb
>>186
Cさえやったことないんじゃメモリ管理について説明するのは難しいな
ざっくり説明すると

C言語ではmalloc, freeを使ってプログラマが自力でメモリ管理を行う
よって、きちんとメモリ管理ができていない場合は実行時にバグになる。

対して、GCありの言語は実行時にGCがバックグラウンドで動いて自動でメモリ管理を行ってくれる
メモリ管理は実行時に自動で行われるのでプログラマは基本的にメモリ管理を行う必要はない
ただし、GCの挙動をしっかり理解していないとメモリリークのバグになることもある

そして、Rustはメモリ管理をコンパイラがコンパイル時に行う
つまり、メモリ管理ができていない場合はコンパイルエラーになる
コンパイラが正しくメモリ管理を行うためにRustには
所有権・借用・ライフタイムというルールが存在する
このルールを守らないとコンパイルが通らないため絶対に理解する必要があるが
このルールをきちんと理解してコードを書くのがなかなかに難しい
それと、このルールを完璧に遵守しようとすると循環参照さえ出来なくなる
なので循環参照等の少し複雑なことをやろうとした場合は
標準ライブラリとして用意されているRc, Weak, RefCell等の使い方も知る必要がある
因みにRc, Weak, RefCellの中身ではunsafeコードが多用されていている
unsafeコードの中ではルールを無視できる代わりにコンパイラがチェックを行わない
つまり、unsafeの中だけはCと同じように自力でメモリ管理する必要がある
だからこの言語は他言語と比べて学習コストが圧倒的に高い
189デフォルトの名無しさん
2018/03/25(日) 10:35:30.44ID:BP/bYIjb
「ざっくり」と言っておきながら気付けばそれなりの長文になってるな…
190デフォルトの名無しさん
2018/03/25(日) 10:49:11.63ID:130KAu9X
なんで聞かれてもいないことを長文で答えるのか
プログラマにはありがちだけど
191デフォルトの名無しさん
2018/03/25(日) 10:51:36.32ID:GhdgZmXr
>なので循環参照等の少し複雑なことをやろうとした場合は
>標準ライブラリとして用意されているRc, Weak, RefCell等の使い方も知る必要がある
>因みにRc, Weak, RefCellの中身ではunsafeコードが多用されていている
>unsafeコードの中ではルールを無視できる代わりにコンパイラがチェックを行わない
>つまり、unsafeの中だけはCと同じように自力でメモリ管理する必要がある
>だからこの言語は他言語と比べて学習コストが圧倒的に高い
この辺考えたら結局C++で、できる限りスマートポインタ使うってのと大して変わらなくね?
て話になりそう。
192デフォルトの名無しさん
2018/03/25(日) 11:32:48.19ID:MQLp3NAe
ライブラリの中でunsafe使ってたからといって、そのライブラリ使用したコード全てがunsafeになる訳でなし
気にし過ぎじゃないか
193デフォルトの名無しさん
2018/03/25(日) 12:12:47.18ID:2sZ1RJA+
いやなるで
unsafe内Cのリソース確保を呼んだなら同じく解放処理も呼ばないとリークする
194デフォルトの名無しさん
2018/03/25(日) 12:21:31.84ID:5S2tvSOb
>>193
いや、ならねーよ
内部でunsafe使ってるからunsafeになるなら関数にもunsafeつけて前提条件つけないといけない
195186
2018/03/25(日) 13:06:55.41ID:tMB2K7Zl
>>188
今やってるサンプル問題はその辺り無しでも解ける難易度だから
rustのつらみがイマイチ分かってないんだよね。
何個か前のスレにあった木構造っていうのをやってみればええんやろか。
難し過ぎるやろか。

>>190
こんなぽんこつに教えてくれてるんやからありがたい話やで。
196デフォルトの名無しさん
2018/03/25(日) 13:44:46.25ID:NiWlHtrf
>>187
JavaもC#みたいにできるようになりました…
どうせみんなKotlinとかScala使うからいいけど
197デフォルトの名無しさん
2018/03/25(日) 14:35:43.51ID:wEE2niQx
>>195
webか目的ならwebアプリを作るべきでしょう
使いもしないデータ構造やアルゴリズムなんて判断基準にならないでしょ
198デフォルトの名無しさん
2018/03/25(日) 14:38:16.26ID:ndR60cG+
java10出たってどうせ現場じゃ使わせてくれないんだろ?
んで未だにstrutsとかオレオレフレームワーク強要するんだろ?
199デフォルトの名無しさん
2018/03/25(日) 16:39:02.18ID:I+zotbSu
WindowsでRust使っている人ってほとんどいないんだろうな
rustupを実行する前にVC++をインスコしろとか書いてあるし
200デフォルトの名無しさん
2018/03/26(月) 00:20:12.61ID:D5Wnx0sa
生で動かす組み込み系の情報収集をしているんだけど半年前よりはだいぶ増えた感があるけどまだまだ少ないなぁ
特にRust以外のツールとCargoの連携について説明されている記事はほとんど見あたらない
ローレベルではユーザーツールやアセンブラ、リンカとビルドシステムの連携は必須だからな

Cargo前提のRustだとシェルスクリプトやバッチファイルでビルドというわけにも行かないし(それらに必要な情報も同じく少ない)
既成のCライブラリやクレートを使う記事はちらほらあるけどそれらが使えないケースだと参考にならない

このへんで役立ちそうな記事って今のところこれくらいしか見つけられていない
https://nkon.github.io/Rust-embedded/

もっともRust抜きでも最近は高レベルのフレームワークを使っていたりOS上での動作だったりするからローレベルの情報は減少傾向だけど
201デフォルトの名無しさん
2018/03/26(月) 01:29:55.31ID:TdhbSc50
「業務でRustを書きたいエンジニア募集!」みたいだよ

https://www.wantedly.com/projects/97207
202デフォルトの名無しさん
2018/03/26(月) 01:31:01.61ID:TdhbSc50
>>201
ごめん、募集終了してたわw
203デフォルトの名無しさん
2018/03/27(火) 09:28:53.61ID:OlyQwcXt
集まったのかな?それとも応募が無かったか。
どちらにせよ気概は応援する
204デフォルトの名無しさん
2018/03/27(火) 09:38:34.01ID:e5+YaH9t
会社的にゲームのサーバーサイドかな
C++からの乗り換えならビルド時間の削減が一番効果あるかもね
205デフォルトの名無しさん
2018/03/27(火) 13:51:08.35ID:7OwU1Hvz
ニコ生は、Rust で、各サーバーに分かれているシステムを、
統合しようとしているらしい

Rust, Elixir は注目されてる
206デフォルトの名無しさん
2018/03/27(火) 14:06:18.97ID:k3vzHZG7
>>200
rustでおもちゃのOS書いてる(た)んだけどローレベルな部分にも適してるみたいなことを謳ってる割にcargoがほんとクソなんだよなぁ
207デフォルトの名無しさん
2018/03/27(火) 21:01:56.04ID:14Lqu+tl
>>206
またcargoがクソって話か…別にそれほど使いづらいとは思わないんだけど…
(使い方に関する情報が少ないという意味で使いづらいという意見なら分かるんだけど…)
どこら辺がクソと思ってて、どうなってれば満足なわけ?
なんだか実現不可能なくらい賢いツールを「ないものねだり」してるように聞こえるんだよね…
というわけで、実在するツールで最も理想に近いツール(もちろん他言語のパッケージ管理ツール)の例を挙げてくれる?
208デフォルトの名無しさん
2018/03/27(火) 21:18:04.54ID:IpDwkilL
Rustのwebフレームワークでなんとなく一番使えそうなRocketとかいうのがnightlyでしか動かない
209デフォルトの名無しさん
2018/03/27(火) 21:25:14.30ID:OIszsbzb
組み込みでパッケージ管理ツールの需要はあまり無いはず。ビルド管理ツールの方が重要
しかも言語の垣根を越えて使いやすい奴

システムプログラミング用を謳っているんだから
「Cやアセンブラで生で動くプログラムを書いたことがあるんだけどRustに興味がある」
位の人を対象にしたチュートリアル的な物が欲しいな。もちろんある程度実践的な内容で

そういえば調べている中でLチカのウェイトにビジーループを使っているコーディング例がいくつも出てきた
自分はタイマと割り込みを使うのが普通だと思っていたんだけど(勉強するという意味でも)最近は違うのかな?
210デフォルトの名無しさん
2018/03/27(火) 21:43:56.53ID:14Lqu+tl
ビルド管理ツールでも良いから、とりあえず、使いやすいツールの例を挙げて欲しんだけど…
「〇〇というツールがあって、××が出来て便利。それに比べてcargoは…」みたいなさぁ…
「使いやすい奴」とだけ書かれても「使いやすい」の基準がさっぱり分からん
211デフォルトの名無しさん
2018/03/27(火) 22:08:40.15ID:H//ajCL2
>>207
ごく普通に使うぶんには俺もディスるほどではないとは思うよ
ただOS書いたりみたいな部分では不満を感じることが多かった

例えばビルドスクリプトとしてのbuild.rsがビルド前のいわゆるpreしかなくてpost的な使い方が出来ないとか
カスタムターゲット書くにしてもlinker-flavorとかそれに対応するリンカに渡されるオプションの一部とかがコンパイラのソースにハードコーディングされてるんで制約ばっかで柔軟性が低いとか
212デフォルトの名無しさん
2018/03/27(火) 22:34:11.89ID:Ua6DMzOD
rustのwebフレームワークはもうひと世代先のが出るまで本命は決まらなそうだ
213デフォルトの名無しさん
2018/03/27(火) 22:46:58.51ID:OlyQwcXt
>>207
> (使い方に関する情報が少ないという意味で使いづらいという意見なら分かるんだけど…)

自分で書いてるじゃん
214デフォルトの名無しさん
2018/03/27(火) 23:03:51.77ID:YR27q37n
>>209
タイマ割り込みは環境依存度が高いから、サンプルとして適さないんじゃね?
215デフォルトの名無しさん
2018/03/28(水) 00:25:40.40ID:3jPJHf2H
>>208
nightlyすぐコンパイルエラーになるよね
まあだからnightlyなんだけど
216デフォルトの名無しさん
2018/03/28(水) 01:12:15.92ID:hFbEShK4
hyperは非同期シングルスレッド対応してるけど、他のFWはまだ未対応でマルチスレッドベースばかりだね

ironは今はメンテされてないし、とりあえず業務で簡単なAPIサーバー構築時にはrocket使ったわ
217デフォルトの名無しさん
2018/03/28(水) 03:08:49.62ID:qhZoJVUP
>>205
ニコニコみたいな机の上でのお勉強しかできないバカばっか揃えた結果
クソみたいなサービスしか作れない技術力のない会社がRust使う選択したなら、
逆神でRustつかわないのが正しい選択って公になったようなもんだな
218205
2018/03/28(水) 04:23:23.13ID:0was1dJs
でも、ドワンゴ江添は「C++11/14 コア言語、江添 亮、2015」と言う、

神の書を書いてるから、一流の伝道師!
219デフォルトの名無しさん
2018/03/28(水) 05:59:49.92ID:LrPDAu7h
tokioがマルチスレッドを標準にしてくみたいだからhyperもマルチスレッドに寄ってくんじゃないかなあ
220デフォルトの名無しさん
2018/03/28(水) 10:37:01.81ID:22eQoYIf
RustのORMのDieselってテストに対応してますか?
開発用DB使うタイプ、モック使うタイプどちらでもいいんですけど…
221デフォルトの名無しさん
2018/03/28(水) 15:21:56.48ID:nwQzoMBM
>>218
典型的な机の上のお勉強だけ得意な人やん
222デフォルトの名無しさん
2018/03/28(水) 15:23:57.64ID:YfKkqZvW
ほんそれ
223デフォルトの名無しさん
2018/03/28(水) 20:51:49.08ID:cpZrmao1
てか奴はコード書いてないこと宣言してるしな。
そゆとこは正直で良いと思うが、プログラマとしてはクソだな。
224デフォルトの名無しさん
2018/03/29(木) 02:06:06.79ID:0KWZ/AkQ
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006

これは、日本の大企業から、猛者を数十人集めて、
欧州委員会に問い合わせながら作った本

C++11/14 コア言語、江添 亮、2015

それに比べて、江添はたった一人で作ったのじゃないか?
超人的すぎるやろw
225デフォルトの名無しさん
2018/03/29(木) 14:52:09.30ID:x+HX/uzd
江添ってイケダハヤトみたいな胡散臭い人たちと同じカテゴリーなんでしょ
実力はないけど口が達者だから信者が多い
芸人向き
そのうち討論番組とかでテレビ出演とかしちゃいそう
226デフォルトの名無しさん
2018/03/29(木) 18:00:19.09ID:Ys835l/3
江添は標準化委員会の一人だからな
一人で書けるのは確かに並大抵じゃないだろうが
一人で書けなきゃそれはそれでヤバイ
227デフォルトの名無しさん
2018/03/29(木) 21:37:04.51ID:pNK8aPzF
まあ次世代の池田信夫といっていいんじゃないかな。
228デフォルトの名無しさん
2018/03/30(金) 00:24:21.95ID:IN/IsR4/
やまもといちろう、清水亮、津田大介あたりだな
229デフォルトの名無しさん
2018/03/30(金) 00:59:44.92ID:YF4CHAi5
やまもといちろうのしったか芸は凄いw
230デフォルトの名無しさん
2018/03/30(金) 12:34:16.32ID:IN/IsR4/
ニコ生ってたしかRust使ってるんだっけ?
Rust江添の今後に期待
231デフォルトの名無しさん
2018/03/30(金) 14:08:12.82ID:82JQsmMo
>>230
だからニコニコごときが選択したってことは使えん技術ってことだろ
ネトフリとかが採用したら考えるが
232デフォルトの名無しさん
2018/03/30(金) 14:10:51.95ID:82JQsmMo
Rust採用事例
ニコニコ←負け組
火狐←負け組
Mercurial←負け組
泥箱←個人情報お漏らし

採用する気にもならん事例のオンパレード
233デフォルトの名無しさん
2018/03/30(金) 14:13:18.93ID:82JQsmMo
顔本もテストプロジェクトかなんかで使ってた記憶があるが、
そういやここもお漏らししたっけな
234デフォルトの名無しさん
2018/03/30(金) 14:14:12.95ID:XUq2/9hV
【悲報】Packt出版より出る予定だった Rust Blueprints が出版取消されました。
235デフォルトの名無しさん
2018/03/30(金) 14:16:08.36ID:82JQsmMo
>>234
資源の無駄だからな。当然の結果
236デフォルトの名無しさん
2018/03/30(金) 18:11:51.70ID:2SqbRzP3
また来たのかよ
237デフォルトの名無しさん
2018/03/30(金) 18:23:23.77ID:IN/IsR4/
Rustってキラーアプリあんの?
238デフォルトの名無しさん
2018/03/30(金) 18:37:40.08ID:ksXSxVO9
ErlangとScalaもディスってるんだ
https://github.com/dwango
239デフォルトの名無しさん
2018/03/30(金) 21:33:06.96ID:35t2qqJ0
セキュアプログラミングとかいって締め付ければ締め付けるほど
インシデントが増えるw
本質はそういうところじゃないってことがよくわかる。
240デフォルトの名無しさん
2018/03/30(金) 22:18:13.79ID:lc3QGxh+
>>239
じゃあ本質はどこにあるんだよ?
自分には分からないからってだけが理由でそうじゃないと決めつけるのは勝手だけど…
241デフォルトの名無しさん
2018/03/30(金) 22:28:24.32ID:35t2qqJ0
開発効率やランタイム速度を気にしなけりゃ既存の言語でも安全に作るなんてのは
簡単なんだよ。
そのトレードオフをどれだけ解決できるかが本質。
242デフォルトの名無しさん
2018/03/30(金) 23:00:52.49ID:OoWw053g
開発効率やランタイム速度を気にしないことが本質?
243デフォルトの名無しさん
2018/03/30(金) 23:58:55.57ID:dpNxQVLw
おぉっとここで日本語の分からないバカが登場~
244デフォルトの名無しさん
2018/03/31(土) 00:49:07.16ID:q0ZQKkqb
>>241
安全に作るのが簡単ねぇ…
簡単だったらGoogleがバグ(セキュリティホール)の発見に
多額の報奨金を出すのはおかしいとか考えないのかね?
君にとっての"安全"の基準が分からないんだが…
245デフォルトの名無しさん
2018/03/31(土) 07:55:27.02ID:9+5jHACw
>>244
グーグルにとってみたらそっちのがよっぽど楽、つまり開発効率がいいからでしょ。
理解不足の人がいるようなのでもう一度言うけどトレードオフの問題だっつーの。
246デフォルトの名無しさん
2018/03/31(土) 09:33:15.73ID:q0ZQKkqb
>>245
極論だな
開発効率を無視するなら安全に作ることは可能ってことだろ
開発効率を無視するってのはつまり開発期間が無限大と仮定するってことだぞ
開発期間が無限大でなければ安全に作ることが不可能なら
それは実質、安全に作ることは不可能って事と同義だからな

結局言いたいことは"開発効率・ランタイム速度"と"安全"がトレードオフの関係にあり、
それをいかにして解決するかが本質ってことだろ
で、その"解決"が何を指すのかっていう一番肝心な部分が抜け落ちてるぞ
"トレードオフの均衡点をどこに置くべきかを探る"のが解決なのか
それとも"トレードオフの関係自体を壊そうとする"ことが解決なのか
あるいはその両方か

あと、Googleは開発効率を優先して報奨金を出してるわけじゃないだろ
そもそもリリースした後のものは開発ではなく保守なんだから
あれは完璧に安全なものを作るのは不可能だから苦肉の策として行ってるだけ

てゆーか、ツッコミどころが多すぎるんですけど…
247デフォルトの名無しさん
2018/03/31(土) 10:29:59.95ID:E8qTp8R8
>>238
もちろん
Erlangは状態中途半端にブッ壊すだけだし
Scalaなんてもはや新規で使うところどこにもねえだろ
248デフォルトの名無しさん
2018/03/31(土) 10:36:16.41ID:E8qTp8R8
>>246
バカじゃね?
Rustがその解決になってるかって観点がどこにもない

トレードオフの落としどころとしてRustにはなんの実績もないし、CやC++と周辺ツール合わせた環境に勝る性質もなにもないって言ってんの
ValgrindやCoverityみたいなツールに比べた優位性あるの?
ただ書きにくい言語がひとつ増えただけじゃん
249デフォルトの名無しさん
2018/03/31(土) 11:03:18.18ID:wLUR9MAo
お前が元気で帰ってきてくれてよかったよ

職は見つからなかったんだね
250デフォルトの名無しさん
2018/03/31(土) 11:12:27.60ID:q0ZQKkqb
>>248
"解決"が何を指すのかを聞いているのにそれには答えずに
Rustは"解決"していないとだけ答える…
会話が噛み合わない…どうすればいいのか…
251デフォルトの名無しさん
2018/03/31(土) 11:39:17.36ID:q0ZQKkqb
実績がないって言うのもFirefoxの一部は既にRustで置き換えられてるのに
君がそれを実績として認めないってだけだろ
ブラウザを一から実装しなおして、それが大きなバグを出すこともなく
Chromeと同レベルの実行速度を実現してるってだけでも充分に実績として認められると思うが。
Chromeに比べればシェアは少ないがそれでも世界中で数百万という人間がFirefoxを使ってるんだぞ
252デフォルトの名無しさん
2018/03/31(土) 11:41:20.61ID:D1vbg0pQ
そこは何億人ものって言わなきゃw
253デフォルトの名無しさん
2018/03/31(土) 11:43:55.45ID:q0ZQKkqb
>>252
数百万はかなり適当に発言した
実際はどれくらいなんだろうな?
254デフォルトの名無しさん
2018/03/31(土) 11:46:03.70ID:0efq0OdT
3億人くらい?
255デフォルトの名無しさん
2018/03/31(土) 13:24:58.66ID:yT2VCMNA
Javaなんて30億のデバイスで動いてんだぞ!
256デフォルトの名無しさん
2018/03/31(土) 14:14:44.03ID:ApL2p8x0
>>251
せめてchromeと同じシェア取ってから言って欲しいもんだ
257デフォルトの名無しさん
2018/03/31(土) 14:32:47.34
Write once, run anywhere なんていう開発プラットフォームがあるらしい
Electronって言うんだって
258デフォルトの名無しさん
2018/03/31(土) 14:34:08.51ID:NaIZlBM+
native modules はい論破。
259デフォルトの名無しさん
2018/03/31(土) 15:26:33.15ID:tztr1ir/
chromeメモリ食いすぎなのでfirefox59に乗り換えたよ
260デフォルトの名無しさん
2018/03/31(土) 15:27:50.28ID:q0ZQKkqb
>>256
"せめて"でChromeと同じシェアなのかよ。ハードル高すぎだろ
そんなのどんな言語使ったって数年じゃ無理だわ
もちろんChromeと同じC++を使って作り直しても無理だわ
どうやら君の御眼鏡にかなう言語はこの世のどこにも無さそうだな
261デフォルトの名無しさん
2018/03/31(土) 16:10:13.77ID:ApL2p8x0
Rustで書き直したら安全で高速なプログラムが簡単に書けるんだろう?

ならchromeのシェアを奪うのなんてすぐじゃないか
本当にRustにそれだけの性能があるなら
262デフォルトの名無しさん
2018/03/31(土) 16:22:16.04ID:D1vbg0pQ
Chromeは昔のIEと同じくらい危険なブラウザになってきたよな。
やはり危険度はシェアで決まるんじゃないだろか。
そもそもあれだけ複雑で奇怪で大きなソフトウェアにバグが無いわけないし。
いやもちろん、HaskellやJavaやJavascriptのような安全な言語で書かれていれば一切のバグは無いんだろうけどさ。
263デフォルトの名無しさん
2018/03/31(土) 16:22:59.14ID:D1vbg0pQ
ここRustスレだったかw
じゃあ、Rustのような安全な言語で書かれてればバグは無いんだろうけどさ。
264デフォルトの名無しさん
2018/03/31(土) 16:25:50.13ID:D1vbg0pQ
Chromeの開発者がRustで書き直したいと書き込んでるのは見たことあるけどな。
でも、書き直すったってそもそも発祥がKHTMLだしな。
Googleは出来損ないのブルドーザーみたいなもんだ。
265デフォルトの名無しさん
2018/03/31(土) 16:37:28.69ID:ApL2p8x0
HaskellはともかくJSやJavaは安全なのかね?
まあスレチだが
266デフォルトの名無しさん
2018/03/31(土) 16:52:02.69ID:q0ZQKkqb
>>261
>Rustで書き直したら安全で高速なプログラムが簡単に書けるんだろう?
誰もそんなこと一言も言ってないだろ。勝手に曲解しないでほしいな
C++よりはRustの方が設計が良いってだけ
そう言ったら次は"C++より良いって言うんならC++で書かれてるChromeより
Rustで書かれたFirefoxのシェアが少ないのはおかしい"って言い出すんだろ
既存資産はC++のほうが何十倍もある。資産が少ないってのはそれだけで不利だ
言語設計はダメだが資産の多いC++か、言語設計は良いが資産の少ないRustか、
どちらを選ぶかは人によって意見が変わるところだろう
資産の問題に関しては時間が解決してくれるかもしれない…希望的観測に過ぎないが…

>ならchromeのシェアを奪うのなんてすぐじゃないか
すぐなわけないだろ。
ブラウザを選ぶ基準なんて数え切れないほど色んな要素が絡み合ってるんだよ
その中には"なんとなく、みんなが使ってるから"なんてしょうもない理由も多く存在する
全ての人間が合理的な判断を下すわけじゃないんだ。そんな単純に事が運ぶわけがない

だから、ツッコミどころが多すぎるんだって…
267デフォルトの名無しさん
2018/03/31(土) 16:58:36.90ID:D1vbg0pQ
Boostはオナニーし過ぎのグロマンコみたいなもんだが使わざるを得ないって話か。
268デフォルトの名無しさん
2018/03/31(土) 17:01:22.81ID:D1vbg0pQ
Javascriptのお勉強をした結果、GCは何の解決にもならないことが分かった。
むしろ危険。
ライブラリがリークについて何も考えていないんだもん。
269デフォルトの名無しさん
2018/03/31(土) 17:02:54.36ID:D1vbg0pQ
なんでだろ~なんでだろ~と検索した結果、あの有名な企業のブログで解決策を発見。
曰く、ライブラリがリークするようにできてるから、一定時間で再起動とか。
そんなのが多すぎた。
270デフォルトの名無しさん
2018/03/31(土) 18:56:11.43ID:ApL2p8x0
ぐだぐだ言い訳してるのを総合すると
「モノは良いけど使い手が少ないせいで流行らない」ってか?
使い手が少ないのはものが悪いってことだろ。残念でした
271デフォルトの名無しさん
2018/03/31(土) 18:58:11.61ID:ApL2p8x0
Go言語見てみろ
モノはいろいろと微妙だがCやC++と比べて強烈な利点があるから、リリースがRustと同じか遅いくらいなのに流行ってるだろ

Rustはどうなんですかねえ?
272デフォルトの名無しさん
2018/03/31(土) 20:27:06.89ID:PqROMcrp
つまりPHPが最良の言語ってわけか
273デフォルトの名無しさん
2018/03/31(土) 20:42:09.87ID:oZoT3jkC
わざわざRustスレまできて延々粘着アンチとかかまってほしい爺さんみたいで見苦しいからやめろ
274デフォルトの名無しさん
2018/03/31(土) 20:45:48.24ID:D1vbg0pQ
>>273
かまってほしい爺さんに、かまってほしい爺さんみたいとかやめてくんない?
あんた人の心あんの?
275デフォルトの名無しさん
2018/03/31(土) 21:14:47.08
かま爺
276デフォルトの名無しさん
2018/03/31(土) 21:55:49.66ID:dXOBbz7B
いくらモノがクソでも流行ってるって一点で考慮に入れる必要はあるし、
逆にどんなに良いものでも流行ってなければ選外になるのは事実よね

PHPが流行ってるのは時代的に残念な背景があるとはいえ、
Goが流行るのは明確な理由があるんじゃないか?
277デフォルトの名無しさん
2018/03/31(土) 22:11:12.54ID:7TTU0i1a
それについて掘り下げる意義はないと思いますよ
278デフォルトの名無しさん
2018/03/31(土) 22:16:22.26ID:dXOBbz7B
まあ確かにないな
せめて日本語で本が出る程度には流行って欲しいが……

今のRustに足りないものってなんだろうな
RubyのRailsみたいに、ある領域のキラーフレームワークみたいなのが欲しいが
Rustがそれを作れる領域って今のところWebAssemblyくらいしかないんだよな
しかもそのWebAssemblyも、GCが入ったらGoとの立ち位置が逆転するし
279デフォルトの名無しさん
2018/04/01(日) 07:31:46.82ID:QnuEAtVo
それはgoが流行っている理由を語るのと同義ではないですか
280デフォルトの名無しさん
2018/04/01(日) 07:36:32.82ID:nW/fPqLD
Goこそブランドの影響だと思うけどなw
Googleって会社も初期メンバーこそキレキレの人間だったのかもしれんが
ブランドイメージが先行しだしたころから
そこにはそこに憧れて集っちゃった凡人がうじゃうじゃだということを忘れてはならない
281デフォルトの名無しさん
2018/04/01(日) 08:59:01.17ID:aM38sJCa
rustは
ゼロ抽象化みたいな機能ブランドに憧れて集まっちゃった凡人がうじゃうじゃだよね
282デフォルトの名無しさん
2018/04/01(日) 09:02:36.32ID:N/JoH072
機能ブランドってなに?中身ないの?
283デフォルトの名無しさん
2018/04/01(日) 09:31:03.82ID:r/SQKbFj
ないよ。あったらもっと人集まってるよ
284デフォルトの名無しさん
2018/04/01(日) 09:41:07.81ID:r/SQKbFj
RustはCやC++を書くのに疲れた人のための言語という位置付けなのに
Rustを書ける奴は別にCやC++書くのに困らないって
イカれた習得難易度に作ってしまったのがそもそもの失敗

Rustのターゲットは別にRustなんて使わなくてもいいかそもそもRustを使えないかの二択
ドンピシャなターゲットが存在しないから流行りようがない
285デフォルトの名無しさん
2018/04/01(日) 09:51:30.48ID:QnuEAtVo
rustを書ける人でcやc++で困らないと結論した人が沢山いるということですか?
286デフォルトの名無しさん
2018/04/01(日) 10:13:31.75ID:9alzQdGn
>>284
>RustはCやC++を書くのに疲れた人のための言語という位置付け
これは事実だけど、C++より簡単に書けることを目指して作ったわけじゃなくて
ポインタ周りのバグ(特にバッファオーバーフローなどが原因のセキュリティホール)
に悩まされてきた人間のために作られた言語だからな
セキュリティを考えてない奴からすれば無用な長物にしか見えないんだろう
287デフォルトの名無しさん
2018/04/01(日) 10:21:58.94ID:9alzQdGn
>>286
訂正:無用な長物→無用の長物
288デフォルトの名無しさん
2018/04/01(日) 11:14:37.02ID:r/SQKbFj
>>286
Rustできちんとコード書ける実力あるなら
CやC++でもセキュリティホール作り込まないプログラミングできるだろって話な
289デフォルトの名無しさん
2018/04/01(日) 11:17:57.70ID:FEh/C/xR
てか「一応読み書きはできるようにはなったけどC/C++の落とし穴を知らないせいで危ないコード書いてる初心者」こそRustやるべきだよな
>>56みたいな

>>56がなんでエラーになるのか理解できないって事はC/C++でもvectorへの参照を何も考えないで使い回してたりするって事だし
290デフォルトの名無しさん
2018/04/01(日) 11:21:05.39ID:r/SQKbFj
ああそれはあるかもな
実用というより教育目的な言語としては確かにアリだ
291デフォルトの名無しさん
2018/04/01(日) 11:36:26.93ID:9alzQdGn
>>288
>Rustできちんとコード書ける実力あるなら
>CやC++でもセキュリティホール作り込まないプログラミングできるだろって話な
出来ないからC++ではValgrindとかのツール使ってチェックしてるんだろ
じゃあツールを必ず使うようにすればいいじゃんって話にはなるが…
292デフォルトの名無しさん
2018/04/01(日) 11:39:14.42ID:9alzQdGn
そもそもValgrindみたいなメモリリークをチェックする類のツールって
Rustのボローチェッカと比べるとどの程度信用できるのかね?
293デフォルトの名無しさん
2018/04/01(日) 11:47:08.80ID:jrLYAFkE
あまり信用出来ない
スマートポインタを(適切に)使ってればそもそも解放忘れはしないし
配列に確保しっぱなし系のリークは検知してくれない
294デフォルトの名無しさん
2018/04/01(日) 11:55:47.66ID:9alzQdGn
>>293
>あまり信用できない
>配列に確保しっぱなし系のリークは検知してくれない
そっか、やっぱりRustのボローチェッカには劣るか
>スマートポインタを(適切に)使ってればそもそも解放忘れはしない
「適切に」ってところがポイントだよね
たとえ熟練のC++erがどれだけ注意してコーディングしてたって
「うっかりミス」はいつか絶対に起きるんだし
295デフォルトの名無しさん
2018/04/01(日) 12:42:04.82
C++でボローチェッカをエミュレーションできないの?
296デフォルトの名無しさん
2018/04/01(日) 12:44:43.78ID:BOTWSFOl
C++ちゃんとかけるならRustも楽勝でしょ。
297デフォルトの名無しさん
2018/04/01(日) 13:57:47.26ID:QnuEAtVo
>>288
できないよ、人間だもの
298デフォルトの名無しさん
2018/04/01(日) 14:16:47.69ID:1ng3UkJB
valgrind使うと実行時間とてつもなく遅くなるし実行時間長いプログラムだと辛い
ASANでも2倍くらい遅くなるので辛いのは同じ
コンパイル時に静的に分かる方が嬉しいし、たまにしか通らないパスもチェックされるのでより安全
299デフォルトの名無しさん
2018/04/01(日) 19:22:10.86ID:aM38sJCa
まあ結局unsafe部分はチェックできないけどね。
その場合でもコンパイル通ったからと主張しだす輩で溢れてる。
300デフォルトの名無しさん
2018/04/01(日) 19:26:04.60ID:QnuEAtVo
どこに溢れてるの?
301デフォルトの名無しさん
2018/04/01(日) 19:51:17.12ID:Vaw8NqEv
脳内
302デフォルトの名無しさん
2018/04/01(日) 21:39:06.35ID:N/JoH072
C++20では生ポが非推奨になるらしいけど
unsafeはチェックできないのと同様に意味がないですね
303デフォルトの名無しさん
2018/04/01(日) 21:53:26.11ID:aM38sJCa
他言語呼んでもメモリリーク起きないとかこのスレでも喚いてた輩がいたわけだが。
drop trait を明示的に書かなっきゃならんとかそいつら全く理解してないだろ。
304デフォルトの名無しさん
2018/04/01(日) 21:55:16.18ID:9alzQdGn
>>302
非推奨になるってどういうこと?
rustみたいにunsafeブロックみたいなのを導入するってこと?
C++は基本的にはCとの互換があるから無理だと思ってたんだけど…
305デフォルトの名無しさん
2018/04/02(月) 11:44:35.64ID:z3JOGYz+
生ポインタ使えることがC++の唯一のメリットなのに
それを非推奨にするなら別の言語使ったほうがマシだろ
306デフォルトの名無しさん
2018/04/03(火) 12:33:46.66ID:GZlQK3q7
RustがC++に実用面で勝ってることなんかある?
307デフォルトの名無しさん
2018/04/03(火) 13:06:14.98ID:cmHjEB2c
勝っているかどうかは知らんが
cargo/crates.io相当のものがないから
新規アプリをC++で書く気はしなくなってしまった。
もしかして最近は便利になってたりするんだろうか。
308デフォルトの名無しさん
2018/04/03(火) 17:54:07.91ID:lesCWZwY
全称命題にするからすぐ反論される
309デフォルトの名無しさん
2018/04/03(火) 21:15:38.01ID:zqNShNDp
ペチパーのわしでも書けるのが勝ってる
310デフォルトの名無しさん
2018/04/03(火) 21:18:30.15ID:BzNmSsTz
しかしインスタンスを変に共有しなけりゃ解放タイミングを
いちいち気にしなくていいって発想は面白い。
311デフォルトの名無しさん
2018/04/03(火) 23:40:54.16ID:K5huRztI
いや、それ当たり前のことだから。
312デフォルトの名無しさん
2018/04/04(水) 00:15:13.34ID:e/ecM7t7
RustでWebブラウザ作ってる人いるね


https://twitter.com/uint256_t/status/952818644433555456
313デフォルトの名無しさん
2018/04/07(土) 01:03:26.54ID:T+RwBbo7
参照カウントガベージコレクションにもスマートポインタにも興味ないrust信者すごいね
314デフォルトの名無しさん
2018/04/07(土) 06:53:26.51ID:k/xupSTU
GCに興味ないのはともかく
BoxとかRcとかモロにスマートポインタだから興味ないとか以前の問題なんだが?
315デフォルトの名無しさん
2018/04/07(土) 07:02:17.22ID:sb7KGbUH
というかなんで今になって参照カウンタGCなんて超素朴なGC実装を引き合いに出すのかが分からん
Goですらそんなもん使ってねえぞ
316デフォルトの名無しさん
2018/04/07(土) 07:10:17.71ID:sb7KGbUH
……まさかとは思うがC++のshared_ptrのことを指して参照カウントGCと称してないよな?

RustではRcとかArcがそれに該当するから、この文脈でも完全に的はずれになるが
317デフォルトの名無しさん
2018/04/10(火) 11:37:36.43ID:pRwunYlM
>>315
Swiftは参照カウント方式のGC採用していたような気がするが
ARCってやつ
318デフォルトの名無しさん
2018/04/12(木) 01:27:42.33ID:JdbozTc/
久しぶりに見に来たらアンチが帰ってきてるじゃん。
せっかくだから、おれも反論レスを書き込むことにする。
319デフォルトの名無しさん
2018/04/12(木) 01:28:00.22ID:JdbozTc/
>>288
こんなこと言っちゃってる時点でセキュリティに気を使ってないのバレバレだよね
セキュリティ関係に詳しくなくて分からないんなら素直に分からないって言いなよ
320デフォルトの名無しさん
2018/04/12(木) 01:28:37.08ID:JdbozTc/
>>299
unsafeなんてC FFIしようとか考えない限りあまり使うことないよ
tokio-coreとかhyperとかhtml5everとかのソースコード見てきなよ
unsafe使ってる箇所なんて10箇所あるかないかってところだから。
コード全域に気を配らなきゃならないのか、たった10箇所程度に気を付けてれば良いのか、
どちらが楽(安全)なのかは火を見るよりも明らかだよね
321デフォルトの名無しさん
2018/04/12(木) 01:30:08.73ID:JdbozTc/
>>303
これに関しては自分がC FFIのコードを滅多に書かないから「そうだったっけ?」くらいにしか考えなかったけどよく考えたら全然違うよね。
まず、値渡しなら引数・戻り値ともに何の問題もない。そのまま渡せばいい。
ポインタ渡し(Box<T>)だった場合はCの関数の引数が所有権か借用のどちらを欲してるのかを確認して、
所有権を欲しがってるならBox::into_raw(x)で所有権を渡せばいいし、
借用が必要ならx.as_ref() as *const _ もしくはx.as_mut() as *mut _で渡せばいい。
戻り値の方ではC側から所有権が渡されてるはずだからBox::from_raw(px)でBox<T>に戻せばOK。
文字列(String)の場合はCStringに変換してから後はBox<T>と同様にinto_raw, from_raw使えばいいだけ。
Vec<T>とかを渡そうとする場合はx.as_ptr()またはx.as_mut_ptr()と場合によってはmem::forget(x)が必要になるんじゃないかな?
受け取る場合はVec::from_raw_parts(px, len, cap)を使えばいいはず。(前述のとおりC FFIはあまり詳しくはないので間違ってたら指摘して下さい)
unsafeの中に何を書けば良いのかはC側のどんな関数を呼ぶのか次第で変わってくるけど、少なくともDropトレイトに関しては全く必要ない。
Box<T>やVec<T>等にあらかじめ実装されてるDropトレイトに任せればいいだけ。むしろ君はDropトレイト使って一体何する気だったのか…?
322デフォルトの名無しさん
2018/04/12(木) 01:30:27.15ID:JdbozTc/
Rustのアンチするのは一向に構わんが、せめて嘘をつくのはやめようね。
323デフォルトの名無しさん
2018/04/12(木) 03:23:54.50ID:XYZqcSuW
C FFIとやらを使うためにはRustの知識だけでなくCの知識も必要
Rustだけ学べばいいなんてことはない
324デフォルトの名無しさん
2018/04/12(木) 06:41:03.77ID:1NMGlh89
>>323
cの関数呼ぶんだから当然だろ
325デフォルトの名無しさん
2018/04/12(木) 09:05:15.80ID:IekpLPdE
>>321
Rustで確保したリソースをCに渡す場合は確かにdropいらないけど、
C側で確保したリソースについては必要では?
Cから何かハンドルが帰ってきて最後にCでcloseするパターン。
326デフォルトの名無しさん
2018/04/12(木) 11:33:57.87ID:6MGFsFO1
>>325
Rust側でDropしないためにDropの実装を上書きする必要があるということ?
327デフォルトの名無しさん
2018/04/12(木) 12:23:34.05ID:IekpLPdE
>>326
Cの関数内で確保したリソースは
当然Rustデフォルトのdrop実装では解放されないから
自分でdrop実装して解放する必要がある、という話。
328デフォルトの名無しさん
2018/04/12(木) 13:14:59.37ID:JdbozTc/
>>325
>>303は「メモリリーク」って書いてあるからヒープに確保されたメモリの解放に関しては
Dropトレイトを実装する必要性なんか全く無いってことを>>321で説明してる。

>>325の言ってる「リソース」ってのはファイルとかソケットとかのことを言ってるんだよね
そっちはメモリリークとはまた別の話になるので状況によるんじゃないかな…
ただ、OSが提供してるリソース(ファイルやソケット)くらいなら、File, TcpListenerとかには
Windows用とUnix用にそれぞれinto_raw_xxx(), from_raw_xxx(), as_raw_xxx()とかが用意されてるから
それを使えば後のことはFile, TcpListenerのdrop実装に任せてしまって問題ないはず。
C側(ライブラリ)で独自に実装されてるリソース(close等の後処理が必要な実装)の場合は
close部分をRustのDropトレイトの実装として移植する必要はあるだろうね。
(もう一度言うけど、自分は普段はC FFIを使わないから詳しくはないので、間違ってたら指摘して下さい)
329デフォルトの名無しさん
2018/04/12(木) 15:11:14.26ID:UiqgOhpn
>>328
メモリリークに限定するとしても
CでmallocしたポインタがRustに渡ってきた場合
Rustが勝手に解放するわけにはいかないから
drop実装してfreeを呼ぶ必要がある。
330デフォルトの名無しさん
2018/04/12(木) 17:39:03.84ID:JdbozTc/
>>329
ちょっと言ってる意味がわからない
Cでmallocされたものであっても所有権ごと渡されていれば解放の責任はRustにある
ていうか、Rust側で勝手に解放しちゃいけないと言ってるのに
Dropトレイトの実装でfreeしたらやっぱりRust側で勝手に解放しちゃってるじゃん
言ってること矛盾してない?

CとRustで型のメモリレイアウトが一致してればあとはBox型に任せるだけだよ

Cから渡されてくるポインタの型のメモリレイアウトが公開されていなければ
(つまりvoidポインタだったりオペーク構造体(オペークポインタ)だったなら)話は別だけど。

その場合はRustはハンドルをもらうだけでいかなる操作(メモリの解放(free)も含む)もC FFIでC側に
頼むしかない(メモリレイアウトがわからない限りはRust側ではどうあがいても何も出来ない)ので
Dropトレイト実装してdrop時にC側にメモリの解放処理も頼む必要がある
331デフォルトの名無しさん
2018/04/12(木) 18:12:43.26ID:B4Vmqq7H
FFIの場合jemallocかシステムのmallocかの違い問題になることありそう
332デフォルトの名無しさん
2018/04/12(木) 21:02:25.76ID:EBEN0Rpp
>その場合はRustはハンドルをもらうだけでいかなる操作(メモリの解放(free)も含む)もC FFIでC側に
>頼むしかない(メモリレイアウトがわからない限りはRust側ではどうあがいても何も出来ない)ので
>Dropトレイト実装してdrop時にC側にメモリの解放処理も頼む必要がある

だからDropトレイトを意識的に実装せにゃならんと始めから言ってるだろうに。
このタイプは絶対仕事でモメるわ。
333デフォルトの名無しさん
2018/04/12(木) 22:43:32.09ID:JdbozTc/
>>322
だったら「Rust側からはメモリレイアウトが分からないようなvoidポインタや
オペーク構造体がC側から渡された場合は」という前提条件をきちんと書け。
条件を何も書かずに「drop trait を明示的に書かなきゃならん」とだけ書かれれば
全ての場合で必要だと言っているようにしか見えない。

あと、>>321で「全く」と書いてしまったことは悪かったと思っている
>>321を書いてる時点は上記のような可能性に気づいていなかった…申し訳ない。

お前みたいに「特定の条件下でしか適用されないこと」に対して条件を書かずに結論だけ書いて
「自分はきちんと伝えた」とか思っちゃってるキチガイとの仕事とかこっちの方から願い下げだから。
334デフォルトの名無しさん
2018/04/12(木) 22:50:55.21ID:JdbozTc/
>>331
そこは自分も同じことを思った。
mallocとjemallocの実装の中身とか見たことないけど、混在してても問題ないのかな?
335デフォルトの名無しさん
2018/04/12(木) 22:54:07.42ID:JdbozTc/
>>333 訂正
>>322>>332
336デフォルトの名無しさん
2018/04/12(木) 23:08:05.77ID:9OO0KoJN
>>330
「勝手に」の部分が曖昧だったので正確に書くと、
Rustはメモリ解放すべきタイミングは知っている
(すなわちCから受け取ったポインタのlifetimeが切れたとき)
Rustはメモリ解放の方法は知らない
(なぜならCのmallocがシステムのmallocなのかjemallocなのか別の何かなのか知るすべがないから)
なので方法について教えるためにdropを実装する。
(このdropでCのfreeを呼べば、mallocと同じメモリアロケータが保証される)

ちなみにメモリアロケータ間の互換性はないので、
例えばlibcでmallocしてjemallocでfreeすると多分SEGVする。
コード例は以下でもどうぞ。
https://stackoverflow.com/questions/31486519/how-do-i-free-a-char-allocated-via-ffi-in-rust
337デフォルトの名無しさん
2018/04/12(木) 23:35:57.15ID:JdbozTc/
>>336
マジか…mallocとjemallocは混在できないのか…
そうなると、C側でmallocされてれば必ずC側にfreeしてもらうしかないということか…
じゃあ今まで俺が書いた方法じゃダメなケースもあるじゃん…すまん。
自分の無知を晒す羽目にはなったが、むしろ今知れてよかったわ。
でも、そうなると新たな疑問が…
338デフォルトの名無しさん
2018/04/13(金) 00:47:00.07ID:AYGoZS+y
jemallocじゃなくてシステムのアロケーター使うオプションだかfeatureだか使えば良いかな
339337
2018/04/13(金) 01:19:50.99ID:rxyiIXLh
>>336
間違いの指摘と情報提供のお礼言うの忘れてた。Thanks!

あと、これってRustでのC FFI に限った話じゃないよね?
C同士でさえもアロケータに何を使ってるか次第で同じ問題が発生する。
Cは時々使ってたのに(しかも仕事で)これを知らなかったのはヤバいな…
恐らく今まではたまたま同じアロケータを使ってたから問題が起きてなかっただけか…
戻り値で文字列(char *)が来た時とかこっちで勝手にfreeしてたぞ…(^_^;)
まあ、どのアロケータ使ってるかなんて誰も気にも留めてなかったし大丈夫だろうけど、
今後は気を付けないとな…
340デフォルトの名無しさん
2018/04/13(金) 01:26:39.63ID:V+3RqgGh
すべての有用なライブラリがRust製にならない限り
Rustだけを学べばよいという状況は訪れずCやC++の習得も必須
341デフォルトの名無しさん
2018/04/13(金) 02:09:57.24ID:zBD4nIN6
>>339
どういたしまして。

C同士の場合は普通glibcへの動的リンクだし
LD_PRELOADとかでjemallocなんかに差し替えても
プログラム全体で差し替わるから特に問題にはならないかと。
もしメモリアロケータを静的リンクしたライブラリとかを使っていればまずいはず。
ただそういう場合はリソースハンドルっぽいAPIになりがちなので
そのままfreeしようとは思わないかもしれない。
342デフォルトの名無しさん
2018/04/13(金) 02:17:49.88ID:I2PL3qG3
>>340
そりゃそうだろ、なにいってんだ
343デフォルトの名無しさん
2018/04/13(金) 02:33:17.17ID:nqEsOLBj
やくに立たねー結局cか。rustって趣味だな。
344デフォルトの名無しさん
2018/04/13(金) 04:00:10.77ID:V+3RqgGh
C/C++だけ覚える
or
RustとC/C++を覚える

学習コスト高すぎRust
345デフォルトの名無しさん
2018/04/13(金) 10:22:17.48ID:w0WUHq34
>>343
趣味でモジラの栄養やるとかどんなドマゾだよ
346デフォルトの名無しさん
2018/04/13(金) 10:26:05.50ID:w0WUHq34
今の会話見るだけでもRustがいかに欠陥言語かわかるのに
それでもRust使うって言うんだからなあ
全部C/C++で書く方が遥かに効率いいしバグも出んわ
347デフォルトの名無しさん
2018/04/13(金) 11:29:35.51ID:EHHg9a+/
C覚えるの必須当たり前ってんなら構文もっとC系に寄せれば良かったのに。
348デフォルトの名無しさん
2018/04/13(金) 12:06:18.44ID:ybbP8EF+
今までの流れからその結論は極端すぎるだろ
もう少し工夫しろ
349デフォルトの名無しさん
2018/04/13(金) 12:27:54.41ID:zH6rmEat
いつのまにか、FFI使うことが前提になってる流れって、rustをdisりたい勢の必死さがうかがえて、ある意味、面白い。
350デフォルトの名無しさん
2018/04/13(金) 12:52:00.31ID:Lj3R2dXy
>>339
CのfreeはNULLなら何もしないと保証されてるけど
解放済みアドレスへのfreeはセグフォ発生するぞ
351デフォルトの名無しさん
2018/04/13(金) 13:00:11.55ID:w0WUHq34
Cの資産に寄生しないとろくなもん作れないのに
そのCとの連携部分が腐ってるってことじゃん

使いもんにならねえって評価は妥当だと思うが?
それともPure Rustでまともなもん作れるつもりか?
352デフォルトの名無しさん
2018/04/13(金) 17:38:51.06ID:l4JsQkL9
まずまともなもんを先に定義してくれ
353デフォルトの名無しさん
2018/04/13(金) 18:09:45.57ID:Z44eD8et
バグらない
動く
実用的
上記3点の実績がある
354デフォルトの名無しさん
2018/04/13(金) 18:37:13.42ID:rxyiIXLh
実用的・実積も曖昧だな
どの程度を実用的で実積があると呼ぶのか具体例を提示してくれ

突き詰めていくと「バグらない」も程度によりけりだしな
Excelだってバグるときゃバグるし…
355デフォルトの名無しさん
2018/04/13(金) 18:48:56.96ID:lEd4ahw7
本スレは相変わらず過疎だしまじ終わったなこの言語
356デフォルトの名無しさん
2018/04/13(金) 19:00:16.55ID:vyE43Z1D
話に入れないからって「………結局駄目!」ってダサすぎない?
357デフォルトの名無しさん
2018/04/13(金) 19:21:19.79ID:EHHg9a+/
jsのファミコンエミュレータをrustで実装し直したらパフォーマンス負けたらしいwww
358デフォルトの名無しさん
2018/04/13(金) 19:27:43.59ID:a8AOaj4F
>>357
JSに負けるとか草しか生えんなwwwwwww
359デフォルトの名無しさん
2018/04/13(金) 19:31:48.55ID:a8AOaj4F
>>354
Linuxくらいバグらないならいいよ
360デフォルトの名無しさん
2018/04/13(金) 20:22:47.30ID:rxyiIXLh
>>357
噂に尾ひれがつく瞬間を目の当たりにして草
多分これ↓のことだろ
http://blog.bokuweb.me/entry/2018/02/08/101522
誰かC x wasmで書き直してみろよ。きっと似たような結果になるから

>>359
ついにLinuxと同レベルじゃないと認めないとか言い始めたぞ…
361デフォルトの名無しさん
2018/04/13(金) 20:58:47.99ID:Ek+y1xD6
>>357,358
ブラウザ JS版 Wasm版
Chrome 63 4.36ms 5.68ms
Firefox 58 5.76ms 3.98ms
Safari 11 9.98ms 4.21ms

う~ん草しか生えんね 草草草の草ァ!だね
362デフォルトの名無しさん
2018/04/13(金) 21:29:03.20ID:a8AOaj4F
>>361
wasmじゃなくてRustと比べてから言えよ
363デフォルトの名無しさん
2018/04/13(金) 21:40:19.55ID:Ek+y1xD6
>>362
草しか生えんわwww
364デフォルトの名無しさん
2018/04/13(金) 22:58:07.23ID:LXloKsM4
まあメモリの管理モデルが違う言語同士でやりとりすれば
色々苦労するのは当たり前なんだよね。
それなのに「rustは勝手に解放してくれる」とか言い張っちゃう信者が有害な訳だよ。
rustが悪いというよりか、こういう馬鹿が多いところが問題。
365デフォルトの名無しさん
2018/04/13(金) 23:04:17.07ID:bso+BPDq
Haskellは副作用が無いとか参照透過性があるって言った時に
C FFIを持ち出して反論するのと同様の不毛さを感じる
366デフォルトの名無しさん
2018/04/14(土) 07:00:49.94ID:xdB8fLqn
不毛?現実によくあることなのにね。。
言語の一番下ではアセンブラが動いてるんだから、そことどう調和もしくは隠蔽させるかってのは
コンピュータ言語にとって本質でしょうが。
367デフォルトの名無しさん
2018/04/14(土) 07:18:52.94ID:S65yHOqM
は?何で一番下が機械語じゃなくてアセンブラなの馬鹿なの?
368デフォルトの名無しさん
2018/04/14(土) 09:16:33.44ID:/jFvD9M/
コンピュータ言語w
369デフォルトの名無しさん
2018/04/14(土) 11:34:49.77ID:+NzeE6vg
アセンブラと機械語は1:1で訳せるから…
370デフォルトの名無しさん
2018/04/14(土) 11:47:39.37ID:oZ68B8i3
アセンブリやろ
371デフォルトの名無しさん
2018/04/14(土) 13:58:04.39ID:dXnZwWyG
結局Rustはサーバ向けでもコマンドツール向けでもGUI向けでも組み込み向けでもない

って事実はほんと覆らんよ
372デフォルトの名無しさん
2018/04/14(土) 14:12:11.55ID:9z5cq9ls
話に入れないからって「………結局駄目!」ってダサすぎない?
373デフォルトの名無しさん
2018/04/14(土) 14:55:11.55ID:42ccGSN6
jsのファミコンエミュレータをrustで実装し直したらパフォーマンス負けたらしいwww
374デフォルトの名無しさん
2018/04/14(土) 15:21:13.70ID:TDyE7icd
>>372
悔しかったら反論してみたらぁ?
375デフォルトの名無しさん
2018/04/14(土) 15:23:55.88ID:xdB8fLqn
>>372
メモリ管理みたいな重要なことについてデララメ振りまいて、
「理解しない奴がrust批判してる」とか言い出してる方が恥ずいわ。
376デフォルトの名無しさん
2018/04/14(土) 15:34:36.03ID:TDyE7icd
上の流れ素直に読んでも、
メモリ管理も全部C側で完結させるのが一番いいって結論にしかならんぞ?

Rustのいいところなんぞ皆無だ
377デフォルトの名無しさん
2018/04/14(土) 15:44:33.95ID:TDyE7icd
というかコンパイラにメモリ管理任せるのが無理だろ。FFIのためにいちいちDrop定義するとか非効率でしかない

メモリ管理はGCに任せるか完全手動にするかの二択なのに、無理矢理そこにヘンテコリンなソリューションもどき持ち込んで混乱引き起こしてるだけじゃん
378デフォルトの名無しさん
2018/04/14(土) 15:50:41.81ID:TDyE7icd
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
379デフォルトの名無しさん
2018/04/14(土) 15:53:50.88ID:LmbQudMt
>>377
うおっ!
ここにきてまさかのRAIIを否定し始めるとか予想外すぎたわ!
お前C++のスマポってなにか知ってる?
380デフォルトの名無しさん
2018/04/14(土) 15:55:07.64ID:TDyE7icd
>>379
ほとんどのコンパイラで採用されてない仕様書上にしかない機能なんざ知らんよ
381デフォルトの名無しさん
2018/04/14(土) 15:58:27.76ID:TDyE7icd
実際混乱引き起こしてるまともじゃない方法なのは上の流れで自明だろ
382デフォルトの名無しさん
2018/04/14(土) 16:02:24.43ID:LmbQudMt
>>380
よろしい。そんな君にはJavaがおすすめだ。そっちで元気にやりたまえ。
383デフォルトの名無しさん
2018/04/14(土) 16:05:01.76ID:75zALjkM
以前も言われてたけど「ひまわり学級の子が普通の授業に出て暴れてる」って表現が実に的確で草
384デフォルトの名無しさん
2018/04/14(土) 16:07:01.72ID:TDyE7icd
間違ったものを間違った奴が流行らせようとしてるんだからそれには「違う」って言っとかないとダメだろ
話にならんと放置したらいずれ手遅れになるほど蔓延する
そうならないうちに叩いておくべきなんだよ
385デフォルトの名無しさん
2018/04/14(土) 16:10:39.48ID:w273LxVR
混乱引き起こしてるのは違いないけどさ
「俺の頭の中で混乱を引き起こしてる」って正確に書こうよ
386デフォルトの名無しさん
2018/04/14(土) 16:11:44.32ID:TDyE7icd
>>385
上のFFI絡みの流れは俺じゃないけど?
387デフォルトの名無しさん
2018/04/14(土) 16:15:30.43ID:w273LxVR
完全手動でメモリ管理するのは混乱起きないからいいよね~
388デフォルトの名無しさん
2018/04/14(土) 16:21:52.10ID:TDyE7icd
>>387
コンパイラに丸投げするよりは良いな
混乱しないって意味だとGCが一番だが
389デフォルトの名無しさん
2018/04/14(土) 16:27:01.78ID:nFvlFlcl
>>375
上のやり取りは俺じゃないけど?
散々間違いがあったら指摘してくれって書いてたのがデタラメを振りまいた?
間違いの指摘に礼を言って終えるところに、鳴りを潜めていたアンチがウキウキで「混乱を引き起こしたRust!!!」と喚き立てた
このスレでも何回もやってる流れじゃんクソダセー
390デフォルトの名無しさん
2018/04/14(土) 16:38:44.62ID:TDyE7icd
はいはい内ゲバですね
ほんとくだらん言語
391デフォルトの名無しさん
2018/04/14(土) 16:43:14.18ID:nFvlFlcl
>>390
内にいるつもりなんだお前
392デフォルトの名無しさん
2018/04/14(土) 16:44:00.69ID:nFvlFlcl
インタプリタへの丸投げ>完全手動でメモリ管理>コンパイラへの丸投げ
実行開始までの混乱しない順だなどう考えても
393デフォルトの名無しさん
2018/04/14(土) 16:47:43.87ID:TDyE7icd
>>391
外から内ゲバ眺めてやっぱこの言語くだらねって思ってるだけ
C++の(後方互換維持のための苦しい構文追加以外)なにが悪いんだか
394デフォルトの名無しさん
2018/04/14(土) 17:00:21.56ID:LmbQudMt
>>393
スマポが何かを知らないヤツがC++を語り始めたぞ…
395デフォルトの名無しさん
2018/04/14(土) 17:00:54.52ID:nFvlFlcl
>>378
ていうかこれ知りたい
Rustの何が(例:MIR)どう機械語との相性が悪く
それに対してC/C++のまともなアプローチの具体例を教えて
396デフォルトの名無しさん
2018/04/14(土) 17:03:21.15ID:LmbQudMt
>>395
代弁してやろう。
「自力で頑張る」

以上
397デフォルトの名無しさん
2018/04/14(土) 17:17:27.65ID:TDyE7icd
>>395
結局解放処理は自分で書くんだろ?
メモリ上の確保のされ方はコンパイラにはわからないんだから

結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良いって話
398デフォルトの名無しさん
2018/04/14(土) 17:24:46.46ID:Syz4zWn3
解放の仕方を実装したら、後はコードのどの場所で何回確保しても自動で解放される事が分かってないっぽいね
399デフォルトの名無しさん
2018/04/14(土) 17:31:29.95ID:LmbQudMt
>>398
だってRAIIもスマポも知らないんだもん。しょうがないじゃん
400デフォルトの名無しさん
2018/04/14(土) 17:34:05.03ID:nFvlFlcl
>>397
C FFIとかの一部分で解放処理を書くんだよ
お前が言ってる通り「手動」だしお前の好きな「手動」でよかったな
中途半端にとは言っても機能するし「無意味」と言い切るには典型すぎる誤謬

>>395にまともに答えてくれる?どう相性が悪いの?どんなアプローチ?
401デフォルトの名無しさん
2018/04/14(土) 17:50:25.61ID:TDyE7icd
>>400
今の説明でわからんなら一生わからんよ
402デフォルトの名無しさん
2018/04/14(土) 17:56:25.03ID:LmbQudMt
>>401
あっ! 逃げたww
403デフォルトの名無しさん
2018/04/14(土) 18:04:42.44ID:nFvlFlcl
Q. Rustの何がどう機械語との相性が悪く、それに対してC/C++のまともなアプローチの具体例を教えて
A. 結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良い

Rustアンチ君との最後のやり取りがこれなのか…?悲しい
404デフォルトの名無しさん
2018/04/14(土) 23:45:32.28ID:lczq2IdA
いい加減ワッチョイスレに移動しようぜ
405デフォルトの名無しさん
2018/04/14(土) 23:54:45.22ID:LmbQudMt
>>404
実際問題ワッチョイは過疎る
406デフォルトの名無しさん
2018/04/15(日) 03:16:54.39ID:8wseEBgk
>>404
YOUがワッチョイのほうで話題ageれば
407デフォルトの名無しさん
2018/04/15(日) 09:21:32.45ID:eccSQZbu
ここはネタスレだからこれでいいよ

まともな話題ないし
408デフォルトの名無しさん
2018/04/15(日) 10:16:53.40ID:pCFT19cL
ワッチョイは運営が管理を放棄するための口実
409デフォルトの名無しさん
2018/04/15(日) 10:33:02.44ID:E1b18XLI
ワッチョイあった方が良い派です
410デフォルトの名無しさん
2018/04/15(日) 11:32:28.09ID:fK7P6CAL
いちおう指摘しておくと以下にわっちょい付きのスレはある。
http://2chb.net/r/tech/1514107621/l50
411デフォルトの名無しさん
2018/04/15(日) 14:26:16.16ID:WuS7UUJE
そう思うんなら勝手にそっちでやってくれ
いちいちこっちに宣伝しないでよろしい
412デフォルトの名無しさん
2018/04/15(日) 14:57:22.17ID:eccSQZbu
せめてスレ立てたやつくらいはあっち書き込んでくれよ。
ワッチョイスレ(本スレ)には俺しかいない。
413デフォルトの名無しさん
2018/04/15(日) 15:05:21.27ID:6SePuRaV
人が集まってる(勝ち残った)方が本スレ
414デフォルトの名無しさん
2018/04/15(日) 16:17:50.87ID:vLrea5+q
アンチスレの方が人多いっていい加減認めようぜ
415デフォルトの名無しさん
2018/04/15(日) 20:40:55.33ID:oxsxYGoa
>>414
いちおうアンチスレも存在するんだぜ
http://2chb.net/r/tech/1509028624/
416デフォルトの名無しさん
2018/04/15(日) 21:13:20.51ID:0BluVJwA
>>384
大元に言わないで、ここでグダってる時点で説得力無いけどな。
417デフォルトの名無しさん
2018/04/16(月) 09:16:50.73ID:fU1aO3Gb
英語で説明する気力がないんだろ
418デフォルトの名無しさん
2018/04/21(土) 15:59:38.16ID:GAOK2TS0
それもあるが日本語の記事でrustマンセーしてるやつは大抵バカっていうのもある。
419デフォルトの名無しさん
2018/04/21(土) 18:22:00.01ID:u/5OPPGG
会話になってないし
時間おいたところで>>395に答えなくてもいいことにはならないからね
420デフォルトの名無しさん
2018/04/22(日) 12:28:50.40ID:fDht+F2y
もう答えた
>>397
421デフォルトの名無しさん
2018/04/22(日) 15:34:45.59ID:4jEar62+
自分から「機械語のレベルと相性が悪い(>>378)」と言ってるのに
「具体的にはどういうこと?(>>395)」と聞かれて、
その返答(>>397)に機械語のことが一切出てこないのは流石に草
422デフォルトの名無しさん
2018/04/22(日) 20:55:11.63ID:jr6NU+gW
英語で説明する以前に日本語でのコミュニケーションに難ありなのか
日本語ネイティブじゃない方なのかな
423デフォルトの名無しさん
2018/04/22(日) 22:58:46.99ID:lYpO0H1A
機械語との相性のいいC,C++のソリューションって、機械語バイト列を関数ポインタにキャストして呼び出すとかじゃないの?
そんなことRustでできるようになって欲しくはないな。
424デフォルトの名無しさん
2018/04/22(日) 23:13:49.80ID:KagmHCpN
できるよ
推奨してないけど
425デフォルトの名無しさん
2018/04/23(月) 00:45:39.39ID:Fi1E6adA
JITとかそういう用途?
426デフォルトの名無しさん
2018/04/24(火) 00:26:37.67ID:IHcLIR+Z
rustで書かれたjitなかったっけ?

ところでrustで書かれたウィルスとかマルウェアとかないよな。
goならMiraiで使われてたけど。
427デフォルトの名無しさん
2018/04/27(金) 21:30:01.00ID:Tx6nrcMv
C/C++の弱い型付けによるキャストは機械語と関係ないだろ
Rustは強い型付けしか原則許してなくてunsafe使えば弱い型付けも出来るけど好んでする必要性はないよねー

プログラミング言語と機械語の間はC/C++もRustもLLVM IRで仲介されてるから、どっちかだけが相性良いとかなさそう
LLVM IRじゃなくGas仲介するとこう違うんだよ、くらいの反論を期待してみるテスト
428デフォルトの名無しさん
2018/04/27(金) 23:30:19.86ID:AfC0onIC
>>427
フロントエンドの話してるのに、バックエンドがLLVMだから違いなどない!は、おかしいのでは?
そんなこと言い始めたら、言語仕様の優劣など語るに値しないということになってしまう。
429デフォルトの名無しさん
2018/04/27(金) 23:43:23.39ID:MR18u0zM
>>427
Any使ったdowncastはunsafeじゃないけどどういうコードの話してんの?
430デフォルトの名無しさん
2018/04/28(土) 16:19:50.16ID:6S6rcsk3
このRustのチャットみたいなのって公式のもの?

https://gitter.im/rust-lang/rust
431デフォルトの名無しさん
2018/05/01(火) 14:27:18.61ID:riKaEN0n
rustでフォントをレンダリングしたいのですがfont-rsやfreetypeなどの設定逆引き的なサイトってありませんかね?
チュートリアル的なサイトは見つかるのですがそこから突っ込んで使用したい場合に参考になりそうな情報がみあたらないです
レンダリングされる線を任意の幅にしたいです
極細フォントを使って線幅1ピクセル×2=計2ピクセルでアンチエイリアス無しみたいな感じの結果が欲しいです
432デフォルトの名無しさん
2018/05/01(火) 14:37:54.06ID:riKaEN0n
具体例を補足します
出力が2値の場合に普通にレンダリングした物を減色してしまうと線幅の不均一になったりディザが掛かってしまって
表示品質が極端に悪くなってしまうのでそれを防止したいです
たとえば「田」みたいな字をレンダリングして減色するとある線は1ピクセルだけど別の線は2ピクセルになってしまったり
交わるところに不要なドットが出現したりします
それを全て任意の線幅に統一したいです
433デフォルトの名無しさん
2018/05/01(火) 14:58:24.50ID:8Qa5eQjM
ここはアンチスレなので、まともな質問はslackへどうぞ
434デフォルトの名無しさん
2018/05/02(水) 04:26:15.76
えぇ。。
435デフォルトの名無しさん
2018/05/02(水) 04:45:47.66ID:JZRYx+4v
https://rust-jp.herokuapp.com/

rustのslack
↓のサービス使ってオープンにすればよい
http://slackarchive.io 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)
436デフォルトの名無しさん
2018/05/02(水) 11:08:56.76ID:C2OG+VM0
Rustってカルトみたいなもんだよな
実態はスカスカで教祖の金儲けに使われてるだけなのに、信者は正義と信じて疑わない辺り

slackなんて内輪の集会に逃げ続けて表の評価に曝されることを避けてる時点でまともなプログラミング言語じゃない
437デフォルトの名無しさん
2018/05/02(水) 11:13:07.30ID:9TOinEtH
>>436
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
438デフォルトの名無しさん
2018/05/02(水) 11:39:02.32ID:C2OG+VM0
>>437
お前はさっさとその答え教えてくれよ
Rust批判するにしてもコンピュータの知識皆無すぎるわ。批判側がお前と同じ知的レベルに見られるのがクソ
439デフォルトの名無しさん
2018/05/02(水) 11:55:03.24ID:9TOinEtH
>>438
へー今日はたくさん書き込むつもりなんだ
440デフォルトの名無しさん
2018/05/02(水) 12:31:00.89ID:ZVrvL9q8
こちらはまともなアンチとキチガイアンチのスレになります。
441デフォルトの名無しさん
2018/05/02(水) 12:53:31.01ID:vKwn9vOL
いやどっちもキチガイだから
442デフォルトの名無しさん
2018/05/02(水) 12:58:01.18ID:vKwn9vOL
>>436
表の評価(2ch)wwww
443デフォルトの名無しさん
2018/05/02(水) 20:38:46.50ID:Ua9w95BC
少しずつRustの研究が出てきたね
https://arxiv.org/abs/1804.10806
444デフォルトの名無しさん
2018/05/03(木) 01:12:08.40ID:Sirn7AO1
win10 rs4にしてからrustdocが遅い。
rs4にMeltdown/Spectre対応のパッチも含まれてたんだろうか。
445デフォルトの名無しさん
2018/05/03(木) 02:54:28.33ID:Rj4yBmSF
Rustを導入している企業・組織の一覧をご覧ください


https://www.rust-lang.org/ja-JP/friends.html
446デフォルトの名無しさん
2018/05/03(木) 08:55:22.99ID:4wWpk2nD
Windows defenderが動いてるとかでは
447デフォルトの名無しさん
2018/05/03(木) 12:04:38.70ID:y3R7schb
少なくとも5chではgoよりrustの方が盛り上がってるな。
448デフォルトの名無しさん
2018/05/08(火) 01:41:55.63ID:jFUdx6HI
impl traitはよ
449デフォルトの名無しさん
2018/05/08(火) 21:29:46.74ID:RGDg6ogT
パフォーマンスとマルチスレッドを理由にRustを採用という事らしい

https://logmi.jp/282807
450デフォルトの名無しさん
2018/05/08(火) 22:15:52.43ID:W4Ax9FiD
ドワンゴといい、ヤバい会社の指標としていいねw
451デフォルトの名無しさん
2018/05/08(火) 22:23:27.27ID:T0pMALEX
機械語のレベルと相性が悪いしなw
452デフォルトの名無しさん
2018/05/08(火) 22:26:07.82ID:EnN/pyur
>>450
>>445
これでもそんな知恵遅れみたなこと言うの?
453デフォルトの名無しさん
2018/05/08(火) 23:31:08.80ID:W4Ax9FiD
同じリストを他言語でも作ってみたら?
どれだけバカなこと言ってるかわかると思うよ。
454デフォルトの名無しさん
2018/05/08(火) 23:52:08.90ID:EnN/pyur
ああそりゃ分かるだろうね、是非作ってみたまえよ
455デフォルトの名無しさん
2018/05/09(水) 00:11:01.28ID:ZcDO5kt6
>>449
謳い文句通りの「速度とマルチスレッド」で選んだら後でめんどくさいよ。
MIRの導入もなかなか成果出てないし、同期はセマフォ/ミューテックスしかなくて
javaみたいに高レベルから低レベルまで自分で書けるわけじゃないし、
non blocking ioも、lock free collectionもなくて外部ライブラリへの依存度が極めて高いし、
cargo腐ってるせいでrustのtooling絡みのissueが日に日に増えるし。

rustの良いところは言語の部分だからコアな機能使わないなら他言語のほうが良い。
土方の要求には合わないでしょ。

それよりimpl traitまだー?
456デフォルトの名無しさん
2018/05/09(水) 00:44:09.86ID:D/4RZNTl
間も無くなんだから静かに待ってなさい
457デフォルトの名無しさん
2018/05/09(水) 08:29:25.33ID:SINErtCB
>>449
これってgoでは無理だったんかね?
単純に趣味の問題?
458デフォルトの名無しさん
2018/05/09(水) 13:55:28.84ID:9bmRNzTn
goって言語仕様でマルチスレッドによるデータレースを起こさない仕組みってあるの?
無かったらその部分が大きいのでは?
459デフォルトの名無しさん
2018/05/09(水) 15:04:31.38ID:bH4TOh4o
goはchannel経由にすれば自動的にアトミック
mutex部分が隠ぺいされてるので意識する必要が無い
460デフォルトの名無しさん
2018/05/10(木) 01:52:41.29ID:8hhZ9q5s
むしろrustがなぜチャネル的なもの入れなかったんだ?
461デフォルトの名無しさん
2018/05/10(木) 02:11:20.77ID:71z1/J2u
標準にも外部crateにもいっぱいあるだろ
ライブラリとしてではなく言語仕様としてという意味か?
462デフォルトの名無しさん
2018/05/10(木) 10:12:22.36ID:sqBEyANZ
>>459
言ってることがよくわからんメモリ共有は基本的にmutexみたいな物はついてない気がするけど。基本的にchannel経由で情報交換しない方針にすれば
データ競合は防げるって話では?

rustってデータ競合がコンパイル時点で防げるって意味がわからん。
そんなことがかのうなん?
463デフォルトの名無しさん
2018/05/10(木) 10:16:06.63ID:sqBEyANZ
>>462
X 基本的にchannel経由で情報交換しない方針
○ 基本的にchannel経由で情報交換する方針
464デフォルトの名無しさん
2018/05/10(木) 10:17:49.30ID:sqBEyANZ
>>463
詳細はこちら
Goでスレッド(goroutine)セーフなプログラムを書くために必ず注意しなければいけない点
https://qiita.com/ruiu/items/54f0dbdec0d48082a5b1
465デフォルトの名無しさん
2018/05/10(木) 13:22:21.00ID:MOe7VLfi
数十GBのオブジェクト管理は、gc待ちきついからオフヒープでとか、(これ聞いたときよりgcは良くなってる)
goroutineで確保したメモリは解放せずgoが管理するから、常駐で同時に大量に走ると解放されないとかはあるみたい。
466デフォルトの名無しさん
2018/05/10(木) 13:35:12.76ID:71z1/J2u
>>462
それが売りの一つなんだから当然出来る
具体的にはこれでも読んでくれ

https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/concurrency.html
467デフォルトの名無しさん
2018/05/10(木) 18:25:01.25ID:0Uo+Yl5e
以下の場合に&*fで具体的にどうなってるのかが分からない
*でderefされてトレイトオブジェクトの実態になって、&を付けることで再度トレイトオブジェクトになってる?
ちなみにexec(f.deref())だとそのまま通るけど、これはBoxのderefが&Tを返すからだよね?
*だとBoxのderefで返った&Tではなく、さらにderefされてTが返っているってこと?


fn create() -> Box<Fn()> {
Box::new(|| println!("test"))
}
fn exec<F: Fn()>(f: F) {
f()
}
fn main() {
let f = create();
exec(&*f);
}
468デフォルトの名無しさん
2018/05/10(木) 21:37:45.30ID:r2ZBYv9N
Derefを実装した型に対しての*xは*x.deref()の糖衣構文
つまり、&*xは&*x.deref()と同じで、それはつまり、x.deref()と同じ
469デフォルトの名無しさん
2018/05/10(木) 22:16:14.49ID:0Uo+Yl5e
なるほど
*x ==x.deref() って言う認識だったのが間違ってたのか
ありがとう
470デフォルトの名無しさん
2018/05/12(土) 02:06:23.28ID:6a2pRrds
impl trait来たな
471デフォルトの名無しさん
2018/05/12(土) 14:27:50.20ID:CbmhA0Cx
きた
472デフォルトの名無しさん
2018/05/14(月) 08:56:23.29ID:+8ra2A+L
久しぶりにRustやろうと思ったけど公式リファレンスが最新版に追いついてないのな
どっかに変更履歴のまとめとか無いのかな
473デフォルトの名無しさん
2018/05/14(月) 12:00:52.07ID:fAXXTBeo
>>427
公式リファレンスって何のことを指してるんだ?
APIリファレンスならきちんと最新版に追従してるし、
チュートリアル(The Book)も2nd Editionがきちんと出てる
バージョンアップの追従ならリリースノート見るかRustの公式ブログ見れば大体分かると思う

Rustは6週間に1回のハイペースでマイナーバージョンアップ繰り返してるから
The Bookのほうは最新版に追いつくこと自体がほぼ不可能だと思うけど
(つい最近もimpl traitがstable化されたばっかりだし…)
474デフォルトの名無しさん
2018/05/14(月) 12:06:29.06ID:fAXXTBeo
>>473
間違えた
X >>427
>>472
475デフォルトの名無しさん
2018/05/14(月) 21:32:55.87ID:+8ra2A+L
そのimpl traitが気になってまたRustやろうと思ったんだけどね
全機能の索引みたいなのがないと学習効率が落ちる
476デフォルトの名無しさん
2018/05/17(木) 09:49:24.40ID:iDnHcMfd
rustって生産性高い?
安全性が高まって結果的に高くなるということではなくね
やっぱでかいプログラムじゃなきゃ使う効果ない?
477デフォルトの名無しさん
2018/05/17(木) 10:44:40.51ID:eZl7hMvh
Javaでnull参照が10億ドル単位の損害と言われてるので
RustはJavaより10億ドルほど生産性が高い
478デフォルトの名無しさん
2018/05/17(木) 11:16:01.90ID:mMzQfbWV
まあ、ネタにマジレスになるが、
その論法だと俺の未完成言語は誰もバグを生み出してないので
Rustより生産性が高いなw
479デフォルトの名無しさん
2018/05/17(木) 11:48:49.35ID:UfgM043o
>>478
分母分子共にゼロなので計算不能ってやつね。
480デフォルトの名無しさん
2018/05/17(木) 14:42:41.57ID:5Q9GbdJl
チーム開発に良さそうな気がするけどメンバーのレベルにかなり依存しそう
481デフォルトの名無しさん
2018/05/17(木) 15:12:36.48ID:xSjwlbqQ
自分がGCなしの言語使ってた時の経験だと、ヌルポより、freeした後にアクセスするバグの方が多かったから、オーナーを一つにするrustはいいと思う。
まあ、objective-cのARCでいいじゃんとも思うけど。
482デフォルトの名無しさん
2018/05/17(木) 15:31:36.59ID:eZl7hMvh
そこでoptionalですよ
こいよ継承クラス、ポリモーフィズムなんて捨ててかかって来い!

実際、null非許容のポインタが欲しい
483デフォルトの名無しさん
2018/05/17(木) 15:59:25.11
誰がヌルポなんか 、ヌルポなんか怖かねぇ!
484デフォルトの名無しさん
2018/05/17(木) 16:39:48.45ID:l6lckqvi
C#だとぬるり
485デフォルトの名無しさん
2018/05/17(木) 19:10:55.29ID:eQ6djlVW
C#の発想元はJavaよってC#もぬるぽ(意味不)
486デフォルトの名無しさん
2018/05/17(木) 23:47:12.62ID:STJHYINb
1.27.0-nightly (2f2a11dfc 2018-05-16)がregressionしとる。
issueある。待つヨロシ。

>>427,473
the rust referenceのことじゃね?the bookとは別にあるだろ。
全然追いついてないよアレ。そもそもまだ仕様書がない言語だし。
" best-effort document"って書いてあるでしょ
487デフォルトの名無しさん
2018/05/18(金) 23:04:38.08ID:e1n+oPRU
httpサーバでありかつクライアントであるみたいなプログラム書く場合、現状hyper一択なのかね?
acitx-webとか誰か使ってない?
488デフォルトの名無しさん
2018/05/19(土) 02:24:33.88ID:1CYkmYAx
最初rocketで書いてたけどactix-webで書き直してる
今だとactix-webが一番良い感じだと思う
必要に応じて同期、非同期、アクターモデルと使い分けられるし
489デフォルトの名無しさん
2018/05/19(土) 22:00:56.80ID:o9r1YzQK
>>488
良い感じか。使ってみるか。ありがとう
490デフォルトの名無しさん
2018/05/23(水) 01:20:45.09ID:RRIpR+v2
https://github.com/rust-lang/rfcs/pull/2444
有志「クソ機能入ったのいらねえから消そうぜ」
大勢「いいな!賛成」
独裁開発チーム「もう入ったから消せませーーーーんwwwwww(クローズ&ロック)」

systemdかよって
491デフォルトの名無しさん
2018/05/23(水) 03:14:02.94ID:V0Z2NuNB
>>490
もう入ったから消せませんってのは横暴なようにも見えるがしようがないとも思う
一度入れてしまった機能をまた使えなくするとか、それこそ混乱するし…
そもそも何故impl trait を引数の位置にも書けるようにしたのかは確かに甚だ疑問ではあるけど…
引数の位置でジェネリクスとトレイト境界じゃなくてimpl trait じゃないとダメなケースとかある?
無いなら、warning出してジェネリクスとトレイト境界に書き直すように促すのが妥当じゃないかな?
492デフォルトの名無しさん
2018/05/23(水) 07:29:53.45ID:chu47WW7
例があるけどすっきり書きたいみたい
https://github.com/phaazon/rfcs/blob/undo-universal-impl-trait/text/1951-expand-impl-trait.md
493デフォルトの名無しさん
2018/05/23(水) 10:44:20.66ID:KWn7zjxF
こういうところでマウンティングとらないといけない辺り
言語(笑)開発チームとやらも内情はどうなってることやら
494デフォルトの名無しさん
2018/05/23(水) 11:19:22.58ID:2AZG2/zg
たしかにどっちで書くべきかよくわからんくなった
495デフォルトの名無しさん
2018/05/23(水) 12:46:35.30ID:wx8WkS/n
<T: Trait> foo: T

foo: &Trait
との比較で特殊なケースを除き前者の方が効率良いが
syntax上後者の方が簡単なので
初心者が誤って後者を使ってしまうケースがあった
これを防ぐためにimpl Trait および &dyn Traitを導入し
&Traitをdeprecateすることになった
496デフォルトの名無しさん
2018/05/23(水) 19:22:54.70ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

D49IO
497デフォルトの名無しさん
2018/05/23(水) 20:12:10.79ID:OqqpDSMd
もう入ったから消せません
は正論

何故クソ機能の進入を許してしまったのか、どうすれば食い止められたのかについて追求すべき
498デフォルトの名無しさん
2018/05/23(水) 21:15:28.51ID:cEWT5Ura
ジェネリクスの型変数って引数と戻り値の型を揃えるとかそういう使い方をすべきであって
Traitをimplした型を受け取るという意味ではimpl Traitを使うべきだと思う
ただimpl Traitを導入するなら1.0の時点で導入してて欲しかった
499デフォルトの名無しさん
2018/05/23(水) 23:34:44.01ID:J44hs+nP
こういうところでマウンティングとらないといけない辺り
言語(笑)開発チームとやらも内情はどうなってることやら
500デフォルトの名無しさん
2018/05/24(木) 00:25:13.01ID:XbYocBeq
javaのジェネリックスが理解できてないやつが多いだけ。
501デフォルトの名無しさん
2018/05/25(金) 02:08:00.91ID:MJUyxiHQ
Rust始まる前に終わったか
502デフォルトの名無しさん
2018/05/25(金) 10:28:02.89ID:fl2+4CP3
始まる要素が欠片でもあっただろうか
503デフォルトの名無しさん
2018/05/25(金) 10:31:47.59ID:fl2+4CP3
>>495
それはdyn Traitの実装理由であっても、
引数位置のimpl Traitを実装した理由の説明になってない
504デフォルトの名無しさん
2018/05/25(金) 12:05:08.76ID:2Lpcv/H6
fn foo(a: &dyn Trait)

fn foo<T: Trait>(a: T)
では前者の方がlightweightでは
505デフォルトの名無しさん
2018/05/29(火) 19:15:02.85ID:MDdgGfn5
target/debug 以下に生成されるdepsとかbuildって何なの?
goとかにはないよね?
gtk-rsだと500MB消費しちゃうんだけど他のプロジェクトで使い回しとか出来ないの?
506デフォルトの名無しさん
2018/05/29(火) 23:04:02.93ID:R7SeORIn
>>505 環境変数CARGO_TARGET_DIRを指定してやれば再利用してくれるよ
ただ、vscodeのrustプラグインの何かがこの環境変数を考慮してないんで挙動がおかしくなったことがあるんで注意
507デフォルトの名無しさん
2018/05/29(火) 23:26:47.02ID:MDdgGfn5
>>506
おお流石に出来たんですね

プラグインがおかしくなるのはrls側の問題ですかね🤔
508デフォルトの名無しさん
2018/05/29(火) 23:29:14.13ID:TMN/Dqsk
Rustと言えばcookpad。
509デフォルトの名無しさん
2018/05/30(水) 14:08:55.25ID:EgEwhYIf
>>501
最近Rustの話聞かなくなったな
510デフォルトの名無しさん
2018/05/30(水) 18:12:45.66ID:pSj5bsTP
HNはリリースの度に話題になってるけど
511デフォルトの名無しさん
2018/05/31(木) 06:31:41.15ID:Ao0QiwhU
日本の企業くらいだよ。
rustで書いてまっせっていうバカなアピールするのは。
512デフォルトの名無しさん
2018/05/31(木) 06:42:55.06ID:RS4tQXGE
まあCloudflareも日本にリージョンあるしな
513デフォルトの名無しさん
2018/05/31(木) 10:37:31.25ID:QFV8wAla
>>511
泥箱って日本企業だっけ
514デフォルトの名無しさん
2018/05/31(木) 15:17:41.00ID:Rs+XOVpI
日本の企業って凄いんだなー
515デフォルトの名無しさん
2018/05/31(木) 20:32:40.66ID:ITatAB0P
wtftwっていうタイル型WM、設定ファイルまでrustで書くのどうなんだろ
設定ファイルはluaあたりが無難?
516デフォルトの名無しさん
2018/05/31(木) 22:08:10.33ID:Ao0QiwhU
>>513
いやもうなかったことにしたがってるじゃんw
それなのに変なのに付きまとわれてるっていう。
517デフォルトの名無しさん
2018/05/31(木) 22:30:50.22ID:Rs+XOVpI
>>516
「なかったことにしたがってる」というソースをプリーズ
518デフォルトの名無しさん
2018/05/31(木) 22:43:00.94ID:RS4tQXGE
Dropboxのbrotliデコンパイラが昨日更新されてたから
24時間以内のホットな情報だ
519デフォルトの名無しさん
2018/05/31(木) 22:43:34.41
Rustが失脚すると得をする組織があるの?
どうしてそこまで情熱的にRustを貶すの?
520デフォルトの名無しさん
2018/05/31(木) 22:46:14.56ID:Qkx1CtmH
>>515 ざっとコンフィグファイル見たらXMonadのコンフィグよりは理解しやすいように思った
xmonad.hsはもっと宣言的に書けて、モナドとか上手く作って見栄えは良くできるんだけど、
馴染みのない演算子(<+>とか)使いまくるんで、よっぽどHaskellに慣れ親しんだ人でないと全容が理解できない

設定ファイルのフォーマットを開発言語と同じにするのはdwmから続くタイル型WMの流儀だし、
思ったより読めていいと思うよ。
521デフォルトの名無しさん
2018/06/01(金) 00:57:19.91ID:Lcv3mjW7
>>519
前段 モジラとその小判鮫以外の全組織が喜ぶ
後段 技術的にカスなものを貶すのは技術者の義務だろ
522デフォルトの名無しさん
2018/06/01(金) 01:23:36.92ID:n6iooPs9
>>521
>技術的にカスなものを貶すのは技術者の義務だろ
じゃあPHPではなく敢えてRustをdisる理由は?
あちらの方が広く使われてるからより害悪だと思うが
523デフォルトの名無しさん
2018/06/01(金) 04:40:22.00ID:WbqigEkQ
>>520
ほうほう
524デフォルトの名無しさん
2018/06/01(金) 06:21:30.96ID:/a7YB1o/
>>522
あれを使ってるやつも害悪性は理解してるからな。
こういう技術的にインテリな要素のある言語って信者がとにかく頑なで
実際のプログラムの現場で非常に問題になることが多い。
525デフォルトの名無しさん
2018/06/01(金) 07:12:12.64ID:V5eoRgyy
ほーん具体的にどんな問題がおきたの?
526デフォルトの名無しさん
2018/06/01(金) 07:23:19.18ID:M/qnTWL0
んー例えば
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
527デフォルトの名無しさん
2018/06/01(金) 08:47:59.46ID:n6iooPs9
>>525
んー例えば
コンパイルが通せなくて自尊心が傷ついて自ら会社をやめちゃう問題とか

この話どこまで事実か知らないけど仮に本当だったとしても
これって言語の問題というよりチームのプログラマの腕を過大評価
もしくは計算に入れてなかったというマネジメントの問題だよね
528デフォルトの名無しさん
2018/06/01(金) 09:23:44.51ID:vv7FkXWB
んー例えば
プラズマクラスター付き家電が話に出てきたら今まで黙ってたのに凄い勢いでエセ科学だと解説し出すよね
529デフォルトの名無しさん
2018/06/01(金) 11:58:37.06ID:HQSTzzds
いや、この粘着をクビにするためにRust導入したんでしょ
性格異常だもん
530デフォルトの名無しさん
2018/06/01(金) 17:08:52.31ID:j7xDfBQ9
老害をふるい落とすために新しい言語を取り入れてるって話?
531デフォルトの名無しさん
2018/06/01(金) 19:16:22.80ID:q9V9sFRe
このフィボナッチ数列も書けないあほ
何度言い返せなくなっても数日後に甦る粘着性
C++で実行時にエラーが出るようなコードを書きまくったのでしょう。性格の悪さと溢れる自尊心から誰の耳も貸さなかったのでしょう。
プログラマーとして生きるよりかは、匿名掲示板で巨悪組織Mozzilaと闘うBBS戦士の方が社会的に良さそう
532デフォルトの名無しさん
2018/06/01(金) 19:29:07.67ID:M/qnTWL0
たとえばドワンゴとかDropboxとか
Rustを採用した企業自体を叩く行為をよくしているよな
あれ見るとちょっと辛くなる
533デフォルトの名無しさん
2018/06/01(金) 20:33:15.28ID:hus0bbCf
>>526
具体的には?
534デフォルトの名無しさん
2018/06/01(金) 22:00:45.35ID:/a7YB1o/
例えばここみたいに安全でもなんでもないドヤしたいだけのクソなrustコードが量産されるとか。
http://tanakh.jp/posts/2016-12-20-rust-pezy-sc.html
535デフォルトの名無しさん
2018/06/01(金) 22:44:23.66ID:hus0bbCf
だから具体的はどこが問題なの?
536デフォルトの名無しさん
2018/06/01(金) 22:47:27.38ID:aoTZOmsj
槍玉にあげる例が1個しかないのがダサ過ぎるわ。しかもその例も対象が特殊だし

>>534は「それRustでやる意味がある?」という疑問に全く応えられないのが問題
LLVM IR-> PEZY-SCというコンパイラがあるんだったら、LLVMがバックエンドの他言語でもいいよねって話
それができないなら、LLVM->PEZY-SCは未完成か現実に即してないんじゃねえのって話
537デフォルトの名無しさん
2018/06/01(金) 22:57:48.57ID:hus0bbCf
rustでやってみたって記事にrustでやる意味あるの?って疑問が出てくるのが不思議なんだけど
rustでも出来た、以外に意味はないでしょう
538デフォルトの名無しさん
2018/06/01(金) 23:37:58.33ID:RhYZ0Afc
新しいこと覚えられないから焦ってるんじゃね
539デフォルトの名無しさん
2018/06/02(土) 00:12:03.87ID:LoS19xRX
>>534
安全じゃないコード も 書けるってことに価値があるんだろ?
C/C++以外の他言語では書くことさえできない。でもC/C++は安全性を売りにはしていない
Rustは安全性を売りにしつつ、必要に応じて安全性を捨てる選択もできるということに価値がある
で、たまたまその記事が安全性を捨てることが必要な数少ない例の1つだったってだけ
540デフォルトの名無しさん
2018/06/02(土) 08:09:01.38ID:yQHVvQ0k
安全でもなんでもないって
unsafeあるやんけ!危険危険!
前後の文脈一切分からんけどとにかく危なそうなこと書いてあるやんけ!
つって叩いてるんだろうなw

>>535
その手の問いにそいつが素直に答えたこと無いからあきらめよう
541デフォルトの名無しさん
2018/06/02(土) 09:00:03.22ID:uxIlP8w7
たまたまねw
どんだけコード例出しても言い出しそうだなw
そもそもコード例が少ない訳で、推進してる奴のコードがそんなもんなら
十分否定的な要素だけどね。
542デフォルトの名無しさん
2018/06/02(土) 09:25:00.11ID:yb2DUuBi
grep出来ねえのか^^;
543デフォルトの名無しさん
2018/06/02(土) 09:27:20.96ID:1kkEW1PU
ちょっとrustの記事書いただけで代表的な推進派扱いかよ
544デフォルトの名無しさん
2018/06/02(土) 09:29:46.62ID:IrGCDZgn
>>541
お前さんの理屈だと、Rustじゃこんなに危険になる!って事だろ?
じゃあ、Rustではそういう危険な書き方しか出来ない!って示さなきゃな。
俺は中立だが、あんまり非論理的なdisりはアンチ=低能と思わせたがってるピエロにしか見えんよ。
545デフォルトの名無しさん
2018/06/02(土) 09:41:57.37ID:yb2DUuBi
既に20万行はコードあるからレビューがてら指摘したら喜ばれるよ
546デフォルトの名無しさん
2018/06/02(土) 11:52:56.13ID:SXqC6st7
>>541
ほんとだどこが問題で悪いのか全然書かない
具体的に言及しだすとフィボナッチ数列とか機械語レベルとか、残念なことになるのが自分でもわかってたのか

まあ本人が書いた通り「ドヤしたいだけ」とか…なんかな?前もマウンティング取られたとか訴えてたし…
547デフォルトの名無しさん
2018/06/03(日) 21:39:05.60ID:xPSrrQIy
またいつもの、ボロクソにされたらしばらく潜伏してから復活するパターンかな
たまには芸風変えたら
548デフォルトの名無しさん
2018/06/04(月) 06:53:30.60ID:OFCCUtyY
Rustの不満は言語仕様やrustcよりcargoやその辺の連携(情報の少なさも含む)にある
549デフォルトの名無しさん
2018/06/04(月) 07:51:33.98ID:+kVYhEiS
既成のクレートを探すのはcrates.ioになると思うけどライセンスってどうやって調べるんだろ
同様にクレート間の依存関係も判りにくい
どちらも一式を落としてきて中身を確認しないと判らないような・・・

Cargoで自動ダウンロードして・・・みたいな使い方をしていると意図せずGPL/LGPLになっていた
みたいなライセンス事故が起きそう
550デフォルトの名無しさん
2018/06/04(月) 09:21:50.73ID:wd+rp+GF
>>549
$ cargo install cargo-lichking
$ cargo lichking check

一先ずlichkingでチェックできるよ
551デフォルトの名無しさん
2018/06/04(月) 09:35:16.99ID:4FFAt/Kh
LGPLのstatic linkとかやめて欲しいよね
552デフォルトの名無しさん
2018/06/04(月) 22:37:59.16ID:OFCCUtyY
>>550
えぇー・・・わざわざインストールしないと出来ないのかよ。とりあえずやってみるか
依存関係はどうすりゃいいんだ?no_stdでも使える奴だけ探したいとか
553デフォルトの名無しさん
2018/06/05(火) 01:20:50.84ID:4vI8haY4
>>552
ライセンスをついては、crate名が既知なら、

https://crates.io/api/v1/(クレート名)

でjson取れるので、そこから再帰的に依存辿れば収集はできそう
554デフォルトの名無しさん
2018/06/05(火) 01:35:07.04ID:4vI8haY4
>>552
no_stdかどうかについては、Cargo.tomlのcategoryパートに"no-std"があるかどうかぐらいしか確認するすべなさそう(2017-2-10に追加されたっぽい)。

皆が皆付けてるとは思えないので、参考程度にしかならないだろうけど。
555デフォルトの名無しさん
2018/06/06(水) 04:08:38.62ID:SHaHb3Ap
ちょうどいい機会だから、カーゴのギフハブべったり依存をやめて抽象化してほしいわん
556デフォルトの名無しさん
2018/06/06(水) 07:27:41.91ID:j1CMVtJk
は?
557デフォルトの名無しさん
2018/06/06(水) 08:37:47.80ID:hN7IXoGK
crates.ioべったりは分かるけどGitHub依存って何
558デフォルトの名無しさん
2018/06/06(水) 09:53:27.50ID:x7s61f1u
goと勘違いしてるのでは
559デフォルトの名無しさん
2018/06/09(土) 09:42:43.51ID:W19N5ngq
rustダメじゃん
firefoxは言語オタに支配されたのか?

【IT】高速化を進めてアドオンを排除したFirefox、ついにシェアが10%切る★2
http://2chb.net/r/newsplus/1528388348/
560デフォルトの名無しさん
2018/06/09(土) 10:00:10.77ID:4+qUC/SZ
FirefoxのシェアでRust叩きって前スレでもやったじゃん
http://2chb.net/r/tech/1507970294/100-
561デフォルトの名無しさん
2018/06/09(土) 12:47:19.10ID:Cz/ni8by

前やったから何?
562デフォルトの名無しさん
2018/06/09(土) 13:15:23.42ID:qABRMkwT
なんで筋の通らない批判を平然とするのか不思議
563デフォルトの名無しさん
2018/06/09(土) 15:26:07.97ID:4+qUC/SZ
>>561
ええ…?FFアドオン排除でRustディスは気にならないのか
以前の試みはアドオンとRustを絡めてみた感じだったな
↓のレスをいつものごとく無視し数日潜んでRust叩きを試みていたけど、スレを跨いで同じ材料出すなよ


109 デフォルトの名無しさん sage 2017/11/15(水) 14:21:13.24 ID:FBksKtwj
>>108
失敗してるやん
Rustなんかで書き直したせいでアドオン全滅してる

114 デフォルトの名無しさん 2017/11/15(水) 14:36:17.78 ID:bBOLEH2G
>>109
それは設計の段階で従来のアドオンとの互換性の一部を捨てるように仕様変更したからだよ。
firefoxのアドオンは自由度が高すぎるが故に、セキュリティに問題を抱えやすかったし、
アドオン同士が衝突して落ちるとかも結構あったから、そこら辺をChromeと同レベルくらいに制限して、
セキュリティと安定性を取る方向に方針転換した。
仕様が変わってるんだから、Rustで書こうが他の言語で書こうがどっちにしろ従来のアドオンの一部は動かないよ。
564デフォルトの名無しさん
2018/06/10(日) 00:29:32.38ID:+hx+JhDk
今回は1週間も我慢できなかったのか
ほかに行く場所ないの
565デフォルトの名無しさん
2018/06/10(日) 01:42:55.67ID:x48+YOhO
>>555の話だけど、
>>555はhg使えなかった時代で止まってんじゃないの?
566デフォルトの名無しさん
2018/06/10(日) 09:09:46.77ID:gHOtKfe5
>>565
gitとgithubはちがうよ?
567デフォルトの名無しさん
2018/06/10(日) 09:10:23.63ID:gHOtKfe5
キチガイ帰ってきてよかった
568デフォルトの名無しさん
2018/06/10(日) 10:06:20.84ID:flig3pd5
相変わらず宗教じみてんな
569デフォルトの名無しさん
2018/06/16(土) 11:05:45.57ID:dxp9ohIz
何でio::Errorにファイル名入ってないんだろう? 不便だなーと思ってたけど
検索してみたら、前は入ってたのに1.0リリース前に削除されたんだとさ

https://internals.rust-lang.org/t/add-filename-information-to-io-error/
570デフォルトの名無しさん
2018/06/16(土) 13:06:12.19ID:Om4I19uv
>>569
非効率になるのを嫌ったってことみたいですね
stdでもつには重すぎるってのは理解はできるけど 確かに不便なんだよなー

自分は結局
ioの関数呼ぶ前にinfo!でログ出すとか
戻ってきたio::Errorをmap_errでPathBuf埋め込んだ自前のErrorに変換するとかしてます
571デフォルトの名無しさん
2018/06/16(土) 18:58:29.98ID:dxp9ohIz
>>570
ここで紹介されてる、failureを拡張して let file = File::open(path).with_path(path)?; と書けるようにするのが
カッコいいなと思った
https://github.com/rust-lang-nursery/failure/issues/189

failureは1.0に向けてまだまだ変えていくみたいだし、これ書いた焦げ寿司氏も参加するみたいだから
期待してるわ
throw!マクロが標準化したら、?の時みたいにrustプログラムの見た目変わりそう
572デフォルトの名無しさん
2018/06/16(土) 20:35:40.86ID:unm3Vek/
2回もpath書くの全然かっこよくないから、少し重くてもなんでもいいから便利なライブラリがあれば使うわ
573デフォルトの名無しさん
2018/06/16(土) 23:56:34.69ID:f9DGXpDH
トレイトオブジェクトってなんでトレイトオブジェクトって呼ぶん?
ようはヒープに動的に作られたストラクトだら?
574デフォルトの名無しさん
2018/06/17(日) 01:17:39.67ID:TG/aPZPS
何らかのTraitを実装したオブジェクトだから、じゃ駄目なの?
変に勘ぐって誤解してるよ。スタックにある構造体でもトレイトオブジェクトになる
575デフォルトの名無しさん
2018/06/17(日) 07:51:39.85ID:p2Sm4Lro
うーんここにはそういうニュアンスでは書いてない気がするんだけどなあ
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/trait-objects.html
576デフォルトの名無しさん
2018/06/17(日) 11:48:23.47ID:an9lNlus
traitってなんだよ
577デフォルトの名無しさん
2018/06/17(日) 12:00:53.08ID:erltHdM+
>>576
特性
578デフォルトの名無しさん
2018/06/17(日) 12:03:03.50ID:an9lNlus
わかんねえよw
579デフォルトの名無しさん
2018/06/17(日) 14:20:21.15ID:rd16QG+W
traitは写像の集合で本来的には定義域の集合でないものなので、それとして扱う場合を特別にトレイトオブジェクトって呼んでるんじゃないの?
580デフォルトの名無しさん
2018/06/17(日) 14:55:33.49ID:TG/aPZPS
>>575
ヒープにある構造体である、とはどこにも書いてないよね

複数の異なる型を同じ関数や構造体で持っておきたいけど、
型が違うからコンパイル時にサイズが決まらないんで困ったねって状況を解決するのがトレイトオブジェクト
そういう事態じゃなければfn foo<T: TraitFoo>(obj: T)とかやって型毎に関数をコンパイラに作ってもらうのが普通
581デフォルトの名無しさん
2018/06/17(日) 15:32:03.62ID:hewfXZ0r
マス科の淡水魚じゃなかったけ
582デフォルトの名無しさん
2018/06/17(日) 15:36:27.65ID:Wo64nPZg
それはトラウト
トラウトサーモン。
583デフォルトの名無しさん
2018/06/17(日) 20:19:57.60ID:p2Sm4Lro
なんらかのトレイトじゃなくて特定のトレイトを実装したなんらかの型ってことかな
584デフォルトの名無しさん
2018/06/17(日) 20:38:08.98ID:JVUiE6fQ
D言語の再来と言われるRustには注目しています。
585デフォルトの名無しさん
2018/06/18(月) 11:09:28.26ID:LH5G8a9n
さすがに「C#とか糞wwこれが俺の考えた最強言語ww」→「結局C#が全部正しかったですサーセンww」で終わったただの中二言語と一緒にするのは失礼
586デフォルトの名無しさん
2018/06/18(月) 15:38:58.79ID:/sFO+jYl
そうだな。D言語に失礼だ
587デフォルトの名無しさん
2018/06/18(月) 17:49:36.48ID:fn6n18W4
C#に、な
588デフォルトの名無しさん
2018/06/18(月) 18:41:33.59ID:MmynirXE
まるでD言語が死に絶えたみたいな口振り
589デフォルトの名無しさん
2018/06/18(月) 18:44:27.51ID:eWM+pHRs
え?とっくに死に絶えたでしょ
590デフォルトの名無しさん
2018/06/19(火) 00:05:30.49ID:wsgBP7Sf
>>571
1.0待てなくてもう現行のfailureにどっぷり浸かっとる。
failureはいいぞ!
591デフォルトの名無しさん
2018/06/19(火) 13:49:32.69ID:77HD0esi
D言語は最近顔本コミットを受けて活発化してる

Rustは採用企業が全く増えなくなって資金も枯渇
メインコミッタもリンゴのSwiftやらにヘッドハントされて
もう将来ないでしょ
592デフォルトの名無しさん
2018/06/19(火) 13:50:33.43ID:77HD0esi
もちろん言語のエコシステムとしての将来がないってだけで、
ライフタイムとかの実装系の先駆としての意義はあったとおもうが
593デフォルトの名無しさん
2018/06/19(火) 15:45:39.61ID:Es9NuDl6
終わってみればdartの舞の海だったな。
594デフォルトの名無しさん
2018/06/19(火) 17:08:02.40ID:menX4d1R
なんで急に元力士の名前が出てきたんだ?
二の舞って言いたかったのか?
595デフォルトの名無しさん
2018/06/19(火) 17:13:53.63ID:TNMX9OjF
>>590
なんかfailureのissues見ると、現状のstd::errorの設計は失敗作扱いみたいだな
それって共通認識なんかな?
596デフォルトの名無しさん
2018/06/19(火) 17:47:33.05ID:cDjhSbaW
Haskellかじってて、Rustに興味出てきたんだけど、なに、廃れつつあるの?
597デフォルトの名無しさん
2018/06/19(火) 18:00:26.05ID:LBhs/jk2
廃れるもクソも、Rustが世間の注目を浴びたことなど未だかつて無い
598デフォルトの名無しさん
2018/06/19(火) 18:16:13.49ID:menX4d1R
大丈夫、大丈夫。
ユーザーが年々すごい勢いで減っているDに比べりゃ
規模は小さいもののRustは年々少しずつ増えてるわけだから
今後普及するかどうかはともかく少なくとも廃れちゃいないし、
学習コストが高いから敬遠されてるだけで注目もされてる
それにHaskellと同じで勉強しといて損はない言語だと思うし
599デフォルトの名無しさん
2018/06/19(火) 19:21:40.76ID:30ZWMBay
そもそも普及を目指してるような気配もないよな
バッテリ同梱などと言い出しもしないばかりか
randすらクレイトになってるから
rustcだけで楽しんでると涙目(´・ω・`)になる
600デフォルトの名無しさん
2018/06/19(火) 19:22:11.75ID:b5m1uThb
Dのユーザが減ってRustのユーザが増えてる世界線はどこにありますか?
601デフォルトの名無しさん
2018/06/19(火) 19:50:06.21ID:R39QGoSG
別に趣味でやってりゃいいんでないの。
ライフタイムとか所有権の感覚は他言語でも役にはたつでしょ。
602デフォルトの名無しさん
2018/06/19(火) 22:33:45.56ID:jJOU+tvI
wasm やるなら stdweb と wasm-bindgen のどちらを使ったらいいですかね?
もしくは他の選択肢の方がいいとかありますか?
603デフォルトの名無しさん
2018/06/19(火) 23:34:50.37ID:X5Ll7hqK
>>595
std::error+error_chain/log crateの問題点を
解決するためにfailure/slog crateが
作られたからだいたいそんな感じだと思う。
failureの方は今nurseryだし。

failureのエラーとstd::errorのエラーを相互変換できるから
移行や依存ライブラリがstd::error使ってる場合に対応簡単だよ。
まあ、1.0待ったほうがいいけど。
604デフォルトの名無しさん
2018/06/19(火) 23:47:20.77ID:X5Ll7hqK
>>602
wasm-bindgenはhost bindings proposalの実装でstdwebはweb apiのrustバインディング。
host bindings proposalはWebAssembly用の(ホストとの)ffiみたいなもん。
605デフォルトの名無しさん
2018/06/20(水) 00:10:51.10ID:pTH4tzak
>>602
stdwebベースのyewとか面白いよ
Reactっぽいことが出来る
606デフォルトの名無しさん
2018/06/20(水) 07:50:19.18ID:wh0fPVE/
>>604
>>605
レスどうもです
host binding(wasm-bindgen)が後発で
cargo-webがあるstdwebの方が開発サイクルが楽そうという感じがしてます
yewも見てみます
607デフォルトの名無しさん
2018/06/20(水) 08:12:54.01ID:wc145BD7
>>603
stdの下にあるけど非推奨、みたいなのが今後だんだん増えてくるのかな
608デフォルトの名無しさん
2018/06/20(水) 08:14:53.51ID:mWzW79Bi
はよRust4.0くらいにならんかな
609デフォルトの名無しさん
2018/06/20(水) 10:36:39.96ID:YLzmhKZ9
>>607
使ってはいけない標準ライブラリとかC言語のgetsかよwwwww
21世紀の言語とは思えねえなwwwwwおもちゃもいいところwwwwwww
610デフォルトの名無しさん
2018/06/20(水) 10:37:49.71ID:zK9FZNDh
きたきたw
611デフォルトの名無しさん
2018/06/20(水) 13:21:29.03ID:aMAqNpY0
テンション高杉wwww
612デフォルトの名無しさん
2018/06/20(水) 17:10:00.84ID:XqMiT4dO
愛され言語ナンバーワンに2年連続で輝いたのに人気ない扱いは意味不明だ
613デフォルトの名無しさん
2018/06/20(水) 18:22:38.96ID:vXpw0FFs
>>612
純粋に聞くがお前の周りでRustサイコーって言ってるエンジニア何人いる?
614デフォルトの名無しさん
2018/06/20(水) 18:41:59.74ID:CaLRYR6s
標本数1~2のデータよりこれ見ません?
https://insights.stackoverflow.com/survey/2018/#technology-most-loved-dreaded-and-wanted-languages
615デフォルトの名無しさん
2018/06/20(水) 18:44:15.98ID:XqMiT4dO
>>613
2/6人かな
616デフォルトの名無しさん
2018/06/20(水) 18:51:57.98ID:vXpw0FFs
>>614
いくらでも組織的に水増しできる問答や投票になんの意味が?
617デフォルトの名無しさん
2018/06/20(水) 18:52:41.55ID:vXpw0FFs
>>615
その程度の言語が世界一位って統計的におかしいと思わん?
618デフォルトの名無しさん
2018/06/20(水) 18:54:56.56ID:Vsx9tnAR
>>616
dreadedに水増ししたの?w
619デフォルトの名無しさん
2018/06/20(水) 18:55:44.33ID:CaLRYR6s
>>617
お前と匿名の一人で統計語ろうっておかしいと思わん?
620デフォルトの名無しさん
2018/06/20(水) 18:57:44.45ID:CaLRYR6s
あとこいつ好感度と使用者の数をごっちゃにしてるの?凄いよそれは
フィボナッチ数列も書けないだけはあると思うよ
621デフォルトの名無しさん
2018/06/20(水) 20:41:21.29ID:Hd+sK95t
フィボナッチ数列って円周率みたくいまもなお計算され続けてたりするのかな
622デフォルトの名無しさん
2018/06/20(水) 21:15:36.40ID:vXpw0FFs
どう考えてもRustなんかよりJavaのほうが愛好家多いだろ
プロダクトの数考えろよ
623デフォルトの名無しさん
2018/06/20(水) 21:52:02.37ID:x0fgVEGk
GithubではJavaScriptが一番多いからJavaScriptが一番愛された言語だよ(お前の中で)
この記事オカズに1年ぐらい黙れそう?
http://wolfbash.hateblo.jp/entry/2017/07/30/193412
624デフォルトの名無しさん
2018/06/20(水) 22:24:58.84
ハンバーガーはマクドナルドが世界一売上高いんだから、マクドナルドのハンバーガーが世界一美味いに決まってるだろ?
625デフォルトの名無しさん
2018/06/20(水) 22:35:12.33ID:6Ldi6ZQ0
>>617
なんで一つのサンプルで統計的にとらえるんだ?
プログラマー的におかしいと思わん?
626デフォルトの名無しさん
2018/06/20(水) 23:15:44.76ID:kIAOzAlL
そういや何でmainが必要なんだろね
627デフォルトの名無しさん
2018/06/21(木) 07:34:12.21ID:yU20OhIB
Nimへの風評被害記事を貼るのはやめろ
628デフォルトの名無しさん
2018/06/21(木) 09:00:57.14ID:osGR8xHL
初見の人のために何度も貼るけど↓が本スレ

http://2chb.net/r/tech/1514107621/

ここはキチガイと戯れるスレ
629デフォルトの名無しさん
2018/06/21(木) 10:39:54.15ID:n536ipp2
>>623
それ>>8でオレが貼った記事な
このスレでも反論の余地の出なかった良記事。Nimについてはともかく
Rustのクソさについては本当によくまとまってる
630デフォルトの名無しさん
2018/06/21(木) 12:34:03.16ID:c3YkgC6b
真正のアホだった
631デフォルトの名無しさん
2018/06/21(木) 17:49:56.62ID:ay5pVfJh
だからさー。文句あるなら記事に反論してみなよ

取り下げられた記事以外誰も出せないまま人格批判だけとか全く理論的じゃないし
そういう人ばっかだよねRust信者って
632デフォルトの名無しさん
2018/06/21(木) 18:20:34.36ID:tEqpfdQL
ここ本スレじゃなかったのか
お邪魔しました
633デフォルトの名無しさん
2018/06/21(木) 18:35:12.47ID:ZtwQwgWl
>>631
archive. fo/7NUr2
なんかある?
634デフォルトの名無しさん
2018/06/21(木) 18:46:46.63ID:ay5pVfJh
>>633
だから取り下げられた記事は反論にならないって
本人が間違いだって取り下げたんだから
635デフォルトの名無しさん
2018/06/21(木) 19:00:49.88ID:c3YkgC6b
>>634
読んでもねぇのに自分勝手に判断して否定するバカが
「理論的じゃない」とかよく言えたな

その言葉そっくりそのままお返しするよ
636デフォルトの名無しさん
2018/06/21(木) 20:30:12.03ID:Do17eRfw
>>635
自分勝手じゃないよ?
そもそも論を取り下げたのは向こうじゃん
取り下げられた論が議論の俎上に上がるのはおかしいでしょ
637デフォルトの名無しさん
2018/06/21(木) 21:05:10.85ID:6Hcg3ucp
ある人がどのレベルでプログラミングしてるか、という差がある
ある人にとってはプログラミングとは設計作業に他ならず
ある人にとってはプログラミングが指の労働でしかない

書き間違えるから、書き忘れるから、という理由でもって
しょうもないバッドノウハウを拝み続ける者すらいる
塩と砂糖を入れ間違う、塩を入れ忘れる、自称料理人
そーいうレベルのプログラマ
638デフォルトの名無しさん
2018/06/21(木) 21:10:50.36ID:tPTNHe4P
クソ言語はRuで始まるの法則。
ソースはRubywwwww
639デフォルトの名無しさん
2018/06/21(木) 21:12:31.35ID:c3YkgC6b
>>636
何故取り下げたかの理由も書いてあったがそっちのほうは完全に消えたかな…
アーカイブすら残ってなさそうだ…
「他の記事を貶めるような記事は品性が疑われるからやっぱり取り下げる」
みたいな理由だっと思うけど、どうせお前はそれも認めないんだろ…

………ふぅ………もういいよ……
お前の頭ん中ではRustはクソ言語で良いよ……
640デフォルトの名無しさん
2018/06/21(木) 21:16:43.31ID:THBJN+Sm
まあ人気であることは否定できないし好きに言わせとけば
641デフォルトの名無しさん
2018/06/21(木) 21:55:24.51ID:cUkhcSdq
Rubyスレいってこい
642デフォルトの名無しさん
2018/06/21(木) 22:10:18.40ID:IDDH/Zj5
>>636
そういう人だね
お前だけは確実に
643デフォルトの名無しさん
2018/06/22(金) 06:32:29.82ID:dlC04wo2
rustup update stable
644デフォルトの名無しさん
2018/06/22(金) 07:54:28.27ID:eG6Vx+RS
クソ言語に固執し続けるクソ人間
645デフォルトの名無しさん
2018/06/22(金) 08:36:26.70ID:YRNyKvjT
1.27.0がstableになったんね
646デフォルトの名無しさん
2018/06/23(土) 08:31:56.29ID:XcMMhDbo
rustは個人開発向けで仕事に使うものじゃないのね。
647デフォルトの名無しさん
2018/06/23(土) 09:39:24.90ID:tcOUUI9f
ソースは?
648デフォルトの名無しさん
2018/06/23(土) 10:17:10.81ID:YCFgkK7r
Cargo.tomlに対応するrustcの最低バージョン番号を書く方法ってある?
649デフォルトの名無しさん
2018/06/23(土) 10:36:49.30ID:SR6K28vn
ネタスレで質問するやつはキチガイ
650デフォルトの名無しさん
2018/06/23(土) 11:42:32.40ID:FNwUUYYn
スレチ
Rustスレに行け
651デフォルトの名無しさん
2018/06/23(土) 12:03:08.67ID:SR6K28vn
キチガイがまともなふりして質問するふりするんだよなー
652デフォルトの名無しさん
2018/06/23(土) 12:36:47.01ID:VZhdie4n
>>648
https://qiita.com/tatsuya6502/items/8b31e2b162aff78787fe
プロジェクトフォルダにrust-toolchainファイル置いてその中で指定出来るみたい
toolchain指定なんでrustup必須になるのと固定指定しかできないっぽいけど
653デフォルトの名無しさん
2018/06/23(土) 17:56:54.88ID:ADF05MCP
みんな英語どうやって勉強したの
654 ◆QZaw55cn4c
2018/06/23(土) 18:09:48.96ID:OlLfOCSW
>>653
受験勉強で
655デフォルトの名無しさん
2018/06/23(土) 18:09:55.67ID:592i1cd7
>>653
俺は英語なら分かるんだけど、日本語はさっぱり分からん
656デフォルトの名無しさん
2018/06/23(土) 18:11:27.27ID:ADF05MCP
>>654
すげーな
オライリーのやつKindleで読んでるけどまず訳すのが大変だわ
657デフォルトの名無しさん
2018/06/23(土) 18:27:07.96ID:ADF05MCP
>>655
英語圏に生まれたかったと切に思う
658デフォルトの名無しさん
2018/06/23(土) 19:52:59.41ID:1v1LX/MG
訳さず英語で読んだ方が…
情報の早さ・量・正確さが段違いだし原著読むと意外と難しい単語使われてない。
bind(bound)を束縛とかアホかと。
せめて結びつけとかにしろよと。
翻訳のセンス無さすぎ。
もしくはわざと小難しくして地位を守ってるのか…
659デフォルトの名無しさん
2018/06/23(土) 19:59:41.54ID:G+zkBspm
結びつけだとassociateの訳ともとれそう
英語と一対一で対応できる和訳の方があとから英語情報に触れるときのハードルを下げると思う
660 ◆QZaw55cn4c
2018/06/23(土) 20:01:25.05ID:OlLfOCSW
>>658
get / put / take なんかで言い換えしたからといって、わかりやすくなったとは思わない
661デフォルトの名無しさん
2018/06/23(土) 20:13:20.08ID:1v1LX/MG
それにしても~を~に束縛しますとかセンス無さすぎる。
明治時代の翻訳見習ってほしい。
漢籍の素養が必要だが…
662デフォルトの名無しさん
2018/06/23(土) 20:59:38.24ID:hXAC/kvi
逆に聞くが「変数にbindする」って日本語にどう訳したら自然なんだ?「結びつける」は別の意味になるぞ

明治期のアレは翻訳っていうよりは対応する訳語を創出するって感じだから、単純な翻訳じゃないぞ

「縛りつける」みたいな感じになるしかないと思うんだが
束縛は単純に漢語にしただけで大差なかろう
663デフォルトの名無しさん
2018/06/23(土) 21:03:29.72ID:YCFgkK7r
>>652
ありがとう
一応そういうのあるんだ
そのページの下に書いてある、edition 指定出来るようになるのを期待、という感じかな
664デフォルトの名無しさん
2018/06/23(土) 21:53:58.53ID:eYj7ZreJ
> 翻訳のセンス無さすぎ。

お前にはあるかのような口ぶりで

> せめて結びつけとかにしろよと。

↑こんなこと言い放ちつつも

> もしくはわざと小難しくして地位を守ってるのか…

束縛っていうふつうの単語を小難しく感じると白状し
地位を守るだのなんだのという珍妙な価値観まで丸出しにするとは恐れ入る
665デフォルトの名無しさん
2018/06/23(土) 22:00:12.26ID:iDCSFlv+
まあ、英語のbindからして数理論理の変数束縛と同じ単語を別の意味で使いまわしてる
近い分野なんだから専門用語もう少し考えてくれても良かったのに
666デフォルトの名無しさん
2018/06/23(土) 22:31:42.63ID:3sIWKIRG
慣れちゃってるから気づきもしなかったけど代入からして大概だよな。
英語だと単にassignだぞ。
667デフォルトの名無しさん
2018/06/23(土) 22:44:14.17ID:YCFgkK7r
その点、グーグルは気が利いてて、
「錆は、安全性、スピード、並行性に重点を置いたシステムプログラミング言語です。
以前のバージョンのRustが錆びてインストールされている場合、」
だからな
668デフォルトの名無しさん
2018/06/24(日) 00:43:46.88ID:8RP1t8O+
「バインドする」で良いのでは
traitとかcrateとか訳すとよくわからなくなるもの多いし全部カタカナでよい
669デフォルトの名無しさん
2018/06/24(日) 00:53:31.43ID:EUL7CrQi
a に 1 を綴じます。
670デフォルトの名無しさん
2018/06/24(日) 01:02:45.16ID:AYN9x63N
タイプアノテーションのないバリアブルのタイプはライトサイドをエバリューションしたときのタイプになります
671デフォルトの名無しさん
2018/06/24(日) 02:00:22.91ID:cQRh0RXw
是々非々だな。
型アノテーションのない変数の型は右側を評価したときの型になります
束縛するはバインドするでよかった。SMの趣味ないし。
672デフォルトの名無しさん
2018/06/24(日) 07:41:58.64ID:yrJGTcca
束縛と代入ってなにか違うんけ?
673デフォルトの名無しさん
2018/06/24(日) 08:29:18.59ID:4dDfbtJe
誰に確認したわけじゃないが、変数に何か値を設定するのが代入で、値に名前を付けるのが束縛だという認識
fn foo(...) {...} は、ある関数に対しfooという名前をつけるので「関数をfooに束縛する」とは言うかもしれないけど、
「fooに関数を代入している」とは言わない、みたいな
674デフォルトの名無しさん
2018/06/24(日) 09:14:33.52ID:aLprG8s0
緊縛と挿入!
675デフォルトの名無しさん
2018/06/24(日) 09:46:27.06ID:dcl6yRWH
単にイミュータブルかミュータブルかの違いでないの?
676デフォルトの名無しさん
2018/06/24(日) 09:52:28.95ID:yrJGTcca
>>673
伝統的な表現だと宣言に近いニュアンスかな
677デフォルトの名無しさん
2018/06/24(日) 10:29:37.13ID:O0XPf3sp
rustはバインドしていない状態の変数も合法だからややこしい

let hoge;
hoge = 100; // これをコメントアウトするとコンパイルできない
println!("{}", hoge);
678デフォルトの名無しさん
2018/06/24(日) 12:51:16.68ID:1I2gvIDj
初心者なんですが、文字列を作成して返す関数を作るときって、
fn hoge() -> String { "hoge".to_string() }
と書くものですか?
それとも
fn hoge() -> &'static str { "hoge" }
と書くべきでしょうか?
679デフォルトの名無しさん
2018/06/24(日) 13:59:02.13ID:yrJGTcca
その例だと関数にする必要なくない
680デフォルトの名無しさん
2018/06/24(日) 15:24:02.20ID:7t4PbT1U
>>678
テケトーにググっただけ

https://qiita.com/Mizunashi_Mana/items/db88cb0bff002abce1ae
681デフォルトの名無しさん
2018/06/24(日) 18:18:06.50ID:ImbiQntl
Stringもstrも返す可能性があるなら Cow<str> で
それ以外なら使えるときは &str を使うのが良いのでは
682デフォルトの名無しさん
2018/06/24(日) 19:01:12.28ID:n+g5Cjrk
Stringとstrを両方残しちゃうあたり
優柔不断でグダグダな言語に思えてしまう
683デフォルトの名無しさん
2018/06/24(日) 19:14:57.34ID:knj+uGWY
はあ…?
684デフォルトの名無しさん
2018/06/24(日) 19:22:46.99ID:rqN/F7y5
C FFIに関する技術資料ってどこにあるんだろ?
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/ffi.html
にチュートリアルはあるけどexternの記述方法とかがわからない
見よう見まねで書けなくはないけどそのまま行くのは事故の元だし
ついでにlibcが何をしているのかもわからない
685デフォルトの名無しさん
2018/06/24(日) 20:18:07.31ID:gRETAB5B
>>684
CのヘッダからRustのインターフェースを自動生成してくれる
bindgenを追っかけてみればよいかと
https://github.com/rust-lang-nursery/rust-bindgen
686デフォルトの名無しさん
2018/06/24(日) 22:15:14.01ID:W9MJDxOG
>>683
せめて理論的に反論しろよグダグダ言語の信者
687デフォルトの名無しさん
2018/06/24(日) 22:29:21.43ID:ztKvyOBw
>>686
ごめんなさい
論はどこですか?
688デフォルトの名無しさん
2018/06/24(日) 23:26:54.62ID:rqN/F7y5
>>685
えぇ・・・ソース見るしかないのかよ・・・
リファレンスマニュアル見てもちゃんと書いてないんだよな
さらにググってもリファレンスマニュアルが引っかかってこない罠
689デフォルトの名無しさん
2018/06/24(日) 23:57:53.79ID:O0XPf3sp
>>684,685
unsafeまわりの文書に入ってる(ただしdraft)
https://doc.rust-lang.org/nomicon/ffi.html
公式文書はgithubのorganization(rust-lang、rust-lang-nursery)から探している
690デフォルトの名無しさん
2018/06/25(月) 00:22:53.39ID:U0L6J6Ez
C言語ライブラリの関数を3回呼び出すコードと格闘すること数時間。ようやく動いた
まだ不明点は残っている
・#[link(~のkindが何を示しているのか判らない
 C FFIの使用例を見るとよく見るんだが・・・
・C言語配列の渡し方が不明
 元は
 >int p[]={16,9};
 >foo(p);
 とりあえず
 >foo("\x10\x09".as_ptr());
 などと書けばデータ上は整合するから動くけどどう見てもスマートな記述方法ではない
・文字リテラルの仕様が不明
 ↑の表記を得るのに数回試行錯誤した

データの与え方もCStringを使った(=\x00終端する)方法は出てくるけど、そうではない方法は
中々見つからなかった。結局↑の表記に落ち着いたが

>>689
ありがとう。kind値について書いてありますね。静的リンクだとkind = "static"らしいですが
付けても付けなくてもファイルサイズは大差ないようです。何が違うのだろう
691デフォルトの名無しさん
2018/06/25(月) 12:50:29.35ID:vFqeQKwN
Cの配列は第一級の値じゃないからas_ptrが正攻法だと思う
692デフォルトの名無しさん
2018/06/25(月) 20:19:17.73ID:U0L6J6Ez
>>689によればFFIで使用できる物として
・#[repr(C付きのstruct
・#[repr(C付きのenum
・box?
・vec
・str
が挙がっているけどCと互換性があるのはこれらのみって事なのだろうか
vecを試してみたら動いたけどextern時に安全じゃないから#[repr(C)]付きのstruct使えなどと言いだした

>>691
マジかよ!確かに文字列は汎用性が高いけど可読性が良くない・・・必要に応じて抽象化しろという事か
693デフォルトの名無しさん
2018/06/25(月) 20:24:02.61ID:J2kal8dh
Rustの側では変更しないけどCの側で変更するような変数ってmutにしないと駄目よね?
694デフォルトの名無しさん
2018/06/25(月) 22:00:13.27ID:U0L6J6Ez
あっ、ヤベェ・・・いきなり重大なバグ出してら
× foo("\x10\x09".as_ptr());
○ foo("\x10\x00\x00\x00\x09\x00\x00\x00".as_ptr());
こうだよな
標準で[16: i32, 9: i32]を"\x10\x00\x00\x00\x09\x00\x00\x00"に変換してくれるようなのが欲しい
695デフォルトの名無しさん
2018/06/25(月) 22:05:44.09ID:KKbqvHaH
うわこれは読みたくないw
難しいもんだな
696デフォルトの名無しさん
2018/06/25(月) 22:59:19.25ID:U0L6J6Ez
ちなみに間違っている状態でも呼んだC関数は正常に終了します。まさにunsafeです。怖いです
何か対策を考えないと大事故を起こしそう
要素数2しかないのにstructを書くのはコード効率の点からも可読性の面からもあまり良いとは思えないし・・・
いろいろ試してみたら
>let p: [i32; 2] = [16, 9];
>foo(&p);
ならいけるようだ。コンパイラは何も言わないけどこの表記が適切かどうかは不明

Rubyだと
foo([16,9].pack("i2")) #配列をint2個分の文字列(=8byteのバイナリ列)に変換
とか書けるんだよなぁ。コストは安くないけど>>694みたいなポカミスは起こらない
697デフォルトの名無しさん
2018/06/25(月) 23:46:12.87ID:kYoiRQin
>>696
何がしたいかよく分からんが
何故にC側がintの配列なのにRust側では文字列を使おうとしてるんだ?
C側がintってことはRust側で対応する型はisizeだろ
(Cのintが事前に32bitと分かってる場合はi32でも可
同様に64bitだと分かっている場合は対応する型はi64)

つまり、Cで
int[] x = {16, 9};
なら、Rustで同じデータを表すものは
let x: [isize; 2] = [16, 9]; // let x = [16_isize, 9]; でもおk
って書けば良いはず

Rubyと同じように考えようとするから変なことになる
RustでFFIするならCと対応する型は何かを考えれば良い
698デフォルトの名無しさん
2018/06/26(火) 00:21:30.73ID:kImvQJUH
>>697
いや、isizeはまずいんじゃない?
例えばx86_64だとisize:64bit,int:32bitだし。
libcクレートのc_intならアーキテクチャ毎に適切なサイズになるから
こちらがいいかと。
699デフォルトの名無しさん
2018/06/26(火) 00:26:36.57ID:kImvQJUH
ついでに言うとFFIするときの型はプリミティブ型以外でも
とりあえずlibcクレートを探すといい。
まぁマイナーなアーキテクチャだと間違ってたりすることもあるから
確認は必要だけど。
700デフォルトの名無しさん
2018/06/26(火) 00:50:28.55ID:85MS96V/
とりあえず仕返しにrubyスレ荒らそうぜ
http://2chb.net/r/tech/1523954817/
701デフォルトの名無しさん
2018/06/26(火) 00:50:41.38ID:Hc+GAUt1
>>698
あれ?そうだっけ?
うかっりしてたゴメン

そう言えばCのintはポインタのサイズに合わせるんじゃなくて
アーキテクチャ毎に変わるんだったっけか
702デフォルトの名無しさん
2018/06/26(火) 01:08:16.37ID:Hc+GAUt1
調べたらCのintにRustで対応する型はisizeじゃなくてstd::os::raw::c_intだったわ
libcのc_intとの違いがよく分からん
対応アーキテクチャの数か?
703デフォルトの名無しさん
2018/06/26(火) 02:21:07.36ID:kImvQJUH
>>702
一応libcはno_stdでも動くというメリットがあった気はする。
逆にプリミティブ型限定でも依存ライブラリ増やしたくないならstdなのかな?
704デフォルトの名無しさん
2018/06/26(火) 08:11:12.99ID:xzmHFSgh
>>697
あなたの言うとおりですが、そのような情報はどこをから得られるのか・・・
>>689等のFFIに関する資料に書いてあるようには見えません
std::os::raw::c_intも>>702を見て探してみたら
https://doc.rust-lang.org/std/os/raw/index.html
ここにあるのか

配列等の長さが変わる型のC互換性に関する情報もどこにあるんだろ
アドレスの連続性とメモリの確保が保証されている必要があると思いますが
705デフォルトの名無しさん
2018/06/26(火) 08:35:08.35ID:Hc+GAUt1
>>704
資料が少ないのはまだ普及してない言語では仕方がない
FFIとか皆が頻繁に使う機能じゃないようなものはなおさら
Cの配列とRustの配列は互換があるはずだけど
悪いがその情報をどこから手に入れたかは覚えていないし
信用されても困る(ついさっきも間違えたしね)
場合によっては資料探すよりソースコード読んだほうが早いことも多いし
根気良く調べるしかないとしか言いようがない
あとはFFIみたいなunsafe部分は出来る限り念入りにテストを書くとか
706デフォルトの名無しさん
2018/06/26(火) 09:06:54.14ID:ffYAyO/t
>>704
arrayとsliceの連続性保証はここですかね。
https://doc.rust-lang.org/reference/type-layout.html#array-layout
707デフォルトの名無しさん
2018/06/26(火) 10:23:55.54ID:MUW40HUm
今のnightlyだとclippyビルド出来ないよね?
ビルド出来る最後のバージョンと、それをインストールする方法教えてください
708デフォルトの名無しさん
2018/06/26(火) 12:18:25.05ID:8xBVh24a
RustのABIについてはドキュメント増やすことはできるだろうけど
それ以前の問題としてCのABI知らないとFFIつらいのでは
709デフォルトの名無しさん
2018/06/26(火) 18:47:03.15ID:xzmHFSgh
付き合ってくれてありがとう

まとめるとFFIで使えるのは
・#[repr(C付きのstruct
・#[repr(C付きのunion
・#[repr(C付きのenum ←条件付き
・box?
・vec ←非推奨?
・str
・array
・slice
・std::os::rawの中にある物
このへんで良いのかな
std::os::rawの中とarray、struct、union、strがあれば一通り出来そうか
710デフォルトの名無しさん
2018/06/26(火) 20:49:29.40ID:qO0rk7ac
vecもas_ptr用意されているし非推奨と言うことはないはず
sliceにderefできるし
711デフォルトの名無しさん
2018/06/26(火) 23:28:33.57ID:+xThVrkU
IDが変わっています

vecの件
>extern {fn foo(p: &std::vec::Vec<i32>);}
>foo(&vec![16, 9]);
これだと
>warning: `extern` block uses type `std::vec::Vec<i32>` which is not FFI-safe: this struct has unspecified layout
>・・・
> = help: consider adding a #[repr(C)] or #[repr(transparent)] attribute to this struct
と言われ正常に動作しない。クラッシュはしないが実行結果がおかしい
>extern {fn foo(p: *const i32);}
>foo(vec![16 as i32, 9 as i32].as_ptr());
これなら問題ないようだ。奥が深い

あとC関数から帰ってきたアドレスをu32へ入れていたのをc_voidへ入れるようにしたら所有権で怒られて動かなくなった
同じコードでも型によって所有権の移動のしかたが違うのか
712デフォルトの名無しさん
2018/06/27(水) 00:01:15.59ID:a5PFJKPe
RustのVec自体には確かCとの互換性はないはずだよ
ただし、Vecはsliceにderefが可能でsliceはCの配列と互換がある

vec![16 as i32, 9 as i32].as_ptr()
はVecに対してas_ptr()メソッドを呼んでるように見えるけど
(ドキュメントを確認すれば分かるが)実際にはVecにas_ptr()メソッドなんて定義されていない
as_ptr()はsliceの方に定義されていて、暗黙的にderefされてからas_ptr()が呼ばれてる
つまり上のコードは丁寧に書き直すと↓と同じ意味(のはず)
let vec: Vec<i32> = vec![16, 9];
let slice: &[i32] = vec.deref();
let ptr: *const i32 = slice.as_ptr();
713デフォルトの名無しさん
2018/06/27(水) 00:13:14.65ID:95B8/IDl
あとC関数の引数&戻り値はmove(ポインターか実値)しないとだめじゃない?
&付けて参照渡しにするのはよく分からない、たぶん未定義動作じゃないかなあ
714デフォルトの名無しさん
2018/06/27(水) 01:04:32.64ID:9Rd9nmLi
>>707
clippyは最新のnightlyは**追ってない**けど常に開発中だから
ビルドできるバージョンは常に変わる。
自分の環境のビルドできる最大のnightlyに合わせろしか言えん。
常にclippyを使い続けたいなら環境の方をclippyに合わせないとだめ。

>>709
- cの配列はraw pointer
- 配列以外ならrepr(C)してメモリレイアウト合わせるか
- C側でopaque pointer定義してas_ptr
- 汎用ポインタはrust側は

pub enum Void;
type VoidRef = *mut Void;

- cのvoid*がrust側にほしいならlibcクレート
- VLAや不完全配列はrustnomicon読む

まずC abi覚えろ。

std140レイアウトならクレートあるぞ。
715デフォルトの名無しさん
2018/06/27(水) 02:41:49.66ID:yfKVc+j6
Rustだけ覚えればいい時代はまだ来ない
C/C++の知識皆無では
716デフォルトの名無しさん
2018/06/27(水) 09:44:32.66ID:SAllJH2o
オライリーの訳本が8月に出るのね
717デフォルトの名無しさん
2018/06/27(水) 10:05:32.17ID:YMyBwU5o
本が出る頃には内容が古くなってるやつだろ
718デフォルトの名無しさん
2018/06/27(水) 14:44:22.85ID:3NxQrIF4
>>716
英語で出る分には多目に見たが、日本語で出るんなら出版社の不買運動だな
どこが訳すか知らんけど
719デフォルトの名無しさん
2018/06/27(水) 17:59:19.20ID:06nI5JoX
不買運動何人参加するの?大規模にやろうぜ
720デフォルトの名無しさん
2018/06/27(水) 18:21:05.70ID:nwq6g8g7
英語なら多目に見るwwwwwwww
721デフォルトの名無しさん
2018/06/27(水) 18:35:05.31ID:hr/rqCUy
>>712
ありがとう、そういうオチか。&で正常に動かないのも納得です
暗黙の変換って便利ですけど理解が浅いとハマる元だったりしますよね
不適切な入力を入れると自分が書いたつもりのコードとは無関係っぽいエラーを出して???になったり

>>713
#[link(name = "・・・")]
extern {
 fn func1(x: *const u8) -> u32;
 fn func2(y: u32);
 fn func3(z: &u32);
}
fn main() {
 unsafe {
  let mut a = func1("foo.dat".as_ptr()); //C側でメモリが確保されアドレスが帰ってくる
  func2(a); //アドレスを使って処理
  func3(&a); //確保したメモリを解放
 }
}
これは動きます。u32をstd::os::raw::c_voidにするとfunc2のaで
>use of moved value: `a`
>= note: move occurs because `a` has type `std::os::raw::c_void`, which does not implement the `Copy` trait
そんな事を言われても困る・・・ついでにenumなので格納されているアドレス値の確認も面倒
usizeなら問題ない。ドキュメントが正しいならusizeはポインタのサイズらしいしこっちの方が楽かも
722デフォルトの名無しさん
2018/06/27(水) 19:40:13.19ID:5BauIrrs
訳本情報どこにある?
723デフォルトの名無しさん
2018/06/27(水) 19:41:49.80ID:Z4vkTjjE
てかrust覚えるなら普通にc++のスマポくらいは知っとかんとわけわからんだろ。
724デフォルトの名無しさん
2018/06/27(水) 19:45:28.45ID:luhHLeJ1
今日発売の新しいrust本買った人いるのかな
評判良ければKindle出た頃に買おうかなと思うけど
725デフォルトの名無しさん
2018/06/27(水) 20:11:21.04
貧乏なのでPacktの糞本を$10セールの時しか買えない
726デフォルトの名無しさん
2018/06/27(水) 20:16:03.57ID:aPrQo9aq
訳本amazonにあったわ
早速予約した
727デフォルトの名無しさん
2018/06/27(水) 20:16:12.37ID:YMyBwU5o
オライリーの本って、オンラインに無料であるやつとおなじやなかったん?
728デフォルトの名無しさん
2018/06/27(水) 21:01:38.86ID:IGU3gLqH
>>727
オライリーの原著は去年12月に発売、今年8月に訳本

今日発売された英語の本は公式ドキュメント(第2版)の印刷版
版元はno starch press
729デフォルトの名無しさん
2018/06/28(木) 01:06:21.38ID:cJz1WTLf
>>721
他の人も似たようなこと書いてるけど、Cの配列は結局はポインタに過ぎないから
C側がポインタを求めれば、当然Rust側でもポインタを渡す

あと>>711
>同じコードでも型によって所有権の移動のしかたが違うのか
は半分正解で半分不正解
正確には、型によって違うんじゃなくて、Copyトレイトをimplしてるか否かで違う
u32はCopyトレイトをimplしてるから所有権はmoveじゃなくてcopyされる
c_voidはCopyトレイトをimplしてないから所有権をmoveしようとする

The Bookちゃんと読んだ?読んでないなら一度きちんと通読することを勧める
730デフォルトの名無しさん
2018/06/28(木) 06:00:08.46ID:YYPKz5qu
rustやるのにあったほうがいい前提知識ってどれくらい?
c++とhaskellがまともに出来ないときつい?
731デフォルトの名無しさん
2018/06/28(木) 06:30:25.53ID:fobuFGlz
そんなわけないだろw
どっちかてと根気が必要だ
732デフォルトの名無しさん
2018/06/28(木) 07:54:11.40ID:1UW06GNd
いや最低限c++のコンストラクタ、デストラクタの動くタイミングくらいは知っとかないと無理だろ。
733デフォルトの名無しさん
2018/06/28(木) 08:12:22.16ID:MOChRiis
>>729
一応deriveでCopy(とClone)を実装すればいいらしいと言うところまでは確認しているのですが
1.std::os::raw::c_voidへ追加で実装できるのか未確認(できたとしてもモンキーパッチになってしまう)
2.別名の型を新規に作る(usizeもしくはusizeへのエイリアスに対するメリットが思いつかない)
なもんで問題なさそうならusizeで良いかなと・・・
というかCのライブラリを使うと>>721みたいなケースは良くあると思うけど他の人はどうしているんだろ
libcのc_voidもlib.rsを見るとstd::os::raw::c_voidと同じみたいだし同様の現象が起きそうです
ググると引数はc_voidを使って戻り値はusizeを使っているようなコードも出てくるしusizeが正攻法なのか?

ちなみにこのコードだとusizeを使ってもmutが不要の警告が出るんですよね。これもそんな事を言われても
困るのですが
734デフォルトの名無しさん
2018/06/28(木) 08:55:27.92ID:bLMLowda
>>733
Cで確保したポインタ(特に○○ハンドルみたいなリソース)は普通はopaque structで受けると思う。
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/ffi.html#%E3%82%AA%E3%83%9A%E3%83%BC%E3%82%AF%E6%A7%8B%E9%80%A0%E4%BD%93%E3%81%AE%E8%A1%A8%E7%8F%BE

どちらかというと、func2の引数が参照渡しでなくて値渡しなのが問題では。
見た感じfunc2では借用して呼び出し後に返してもらえばいいっぽいけど。
735デフォルトの名無しさん
2018/06/28(木) 10:18:12.24ID:MyWFnKdA
>>732
えーなんで?rust書いてる人の大半は知らないでしょ
736デフォルトの名無しさん
2018/06/28(木) 10:38:48.43ID:LheEK93m
こりゃC++まだ覚えてない人はrustなんか勉強してる場合じゃないねw
737デフォルトの名無しさん
2018/06/28(木) 12:56:07.56ID:rDWw9n99
c++といってもRAIIとスマートポインタくらいで良いのでは
知らなくてもtrplなど読めばなんとかなるとは思うが
代数的データ型なども同様

あとは用途次第だけどFFIやるならCのメモリレイアウトくらいは押さえておいた方がよい
738デフォルトの名無しさん
2018/06/28(木) 13:32:58.62ID:LheEK93m
そんないい加減なことでいいのだろうか?
ちゃんとC/C++一から十まできちんと理解した方がよいのでは?
それからじゃないとそこがいい加減でRustなんて本当に使えるようになったと言える?
739デフォルトの名無しさん
2018/06/28(木) 14:08:04.32ID:QGaIyydK
C++完全に理解した人間なんて世界中に何人いるやら
740デフォルトの名無しさん
2018/06/28(木) 14:14:44.86ID:rY43/kt0
Cはともかく、C++に時間を割く必要はないじゃろ
741デフォルトの名無しさん
2018/06/28(木) 14:20:27.58ID:61gzDvUq
むしろCすら知らないほうが変な先入観とか無くて所有権とかライフタイムとか素直に理解しやすそうな気もする
742デフォルトの名無しさん
2018/06/28(木) 14:28:13.71ID:MyWFnKdA
必要という理由が分からない
言語なんて使いながら覚えていくもんでしょ
743デフォルトの名無しさん
2018/06/28(木) 15:28:41.63ID:a2wUxb0k
>>738
RustはC/C++分かってないと書けない
→C/C++を分かるまでやる
→C/C++がわかってしまえばそもそもRustなんて不要だと気づく
→Rustを捨てる
744デフォルトの名無しさん
2018/06/28(木) 16:07:41.79ID:cJz1WTLf
>>730
確かにC++とHaskellが出来きればRustの習得にはそれほど苦労しないだろうとは思う
ただ、理解できるまでにかかる時間量の問題であって、それがないとキツイってわけじゃない
むしろ、Rustの学習するためにC++とHaskellを先に学習するとか時間の無駄
The Bookが懇切丁寧に解説してくれるので前提知識はなくても全く問題ないと思う
ただし、Goみたいな言語と違ってサンプルコード読めばある程度理解できて
何となくで書けてしまうような言語ではないのでThe Bookの熟読は必須
それと、FFIする場合はある程度のCの知識は必要だよ
745デフォルトの名無しさん
2018/06/28(木) 16:49:45.85ID:Z76aQv2+
FFIしたいけどCは知らん、とかレアケースだから
そんな心配はせんでいい
746デフォルトの名無しさん
2018/06/28(木) 16:53:35.27ID:rY43/kt0
別にRustは大して関数型言語じゃないし、Rustのために他の関数型言語から、っていうのは本末転倒すぎるな
747デフォルトの名無しさん
2018/06/28(木) 16:59:30.65ID:Z76aQv2+
全然モナドってないし、関数型言語フレーバーぐらいでしょ
748デフォルトの名無しさん
2018/06/28(木) 17:13:53.31
C++は速いがコーディングストレスで禿げる
Rustで若干のパフォーマンスを犠牲にしてでも、いかに毛髪を守れるかがテーマ
749デフォルトの名無しさん
2018/06/28(木) 17:18:23.47ID:GP5sTNn0
>>748
C++程度で禿げてたらRustのコンパイル通らん

Rustのコンパイル通せるならC++でやる方がよいコード書ける

つまりRustは実用にならん。C++er養成ギプスって話ならわかる
750デフォルトの名無しさん
2018/06/28(木) 17:41:56.51ID:BmtmAhz0
結論: やっぱりC++からしっかりやったほうがよい
751デフォルトの名無しさん
2018/06/28(木) 17:46:58.11ID:GP5sTNn0
>>750
違う違う、そもそもRustは不要って結論な

C++勉強してC++そのまま使い続ければいい
752デフォルトの名無しさん
2018/06/28(木) 17:47:09.81ID:tKvy+NRw
C++98
C++03
C++TR1
C++11
C++14
C++17
C++20
C++23
C++26
C++29
C++32
C++35
C++38
753デフォルトの名無しさん
2018/06/28(木) 17:56:38.73ID:MyWFnKdA
なんだコンパイルできないおじさんか。。
754デフォルトの名無しさん
2018/06/28(木) 18:32:36.30ID:f0Ft93Jb
>>746
単純に最初期のRustコンパイラはOcamlで組まれてたからって事情でないの
755デフォルトの名無しさん
2018/06/28(木) 18:34:20.70ID:f0Ft93Jb
>>749
C++より潜在的なメモリ管理バグを減らせるってのは十分有用な話では
756デフォルトの名無しさん
2018/06/28(木) 18:54:33.03ID:frbOjHXy
リストとリスト操作をなんで組み込んでくれなかったのかな?
::とか@とかあるだけでだいぶ捗るよね(一部の人にとって)
757デフォルトの名無しさん
2018/06/28(木) 19:41:35.09ID:Z76aQv2+
パフォーマンス面だけで言えば、リンクトリストは問題外だからじゃない?
758デフォルトの名無しさん
2018/06/28(木) 20:19:23.05ID:X+ujNNAX
コンパイルできないおじさんのコードもNLL有効にしたらコンパイルできたから
来年にはrust書けるようになるよ
759デフォルトの名無しさん
2018/06/28(木) 20:29:59.05ID:1UW06GNd
別にどの言語だろうと所有権を考えるってのは普遍的に必要だとは思うぞ。
rustだろうとc++だろうとはたまた動的言語でもメモリ以外にも資源管理なんて
問題はどこにでも出てくるわけで。
760デフォルトの名無しさん
2018/06/28(木) 20:30:03.07ID:rY43/kt0
consとかが使えないのはmutとの兼ね合いもあるんじゃないの
あれ完全にイミュータブルリスト向けだもんよ
761デフォルトの名無しさん
2018/06/28(木) 21:16:31.35ID:YYPKz5qu
https://www.reddit.com/r/rust/comments/8ub964/microsoft_announces_using_rust_to_build_some_of
MSもRust使ってるんですか
やるしかない
762デフォルトの名無しさん
2018/06/28(木) 21:22:26.06ID:MOChRiis
>>734
なるほど。c_voidの正体はそれでしたか

引数は既成Cライブラリの仕様なのでなるべく変更したくありません

*mutを使うコードを検討していて気がつきましたがRustの生ポインタにfunc1が返すアドレスを入れると
Cと同じ危険を抱えますよね。func3でアドレスがNULL=0になりますからその後に触ると当然クラッシュします
763デフォルトの名無しさん
2018/06/28(木) 21:27:33.58ID:wCMJyKP8
NLLいまだに理解できなくて使えない
764デフォルトの名無しさん
2018/06/28(木) 21:36:28.71ID:cJz1WTLf
>>761
actixとactix-webのメインコントリビュータもよく見ると普通にMS所属の人だった
https://github.com/actix/actix/graphs/contributors
https://github.com/actix/actix-web/graphs/contributors
765デフォルトの名無しさん
2018/06/28(木) 21:45:00.19ID:CykyBbY/
MSは英語なので、大目に見てもらえる
766デフォルトの名無しさん
2018/06/28(木) 22:08:43.56ID:fobuFGlz
> Please never sell Rust to Microsoft!

ちょっとわらった
767デフォルトの名無しさん
2018/06/28(木) 22:56:56.15ID:mQsBu3Yx
言語に関してはMSがオーナーになるのは大勝利だろ
768デフォルトの名無しさん
2018/06/28(木) 23:58:14.47ID:aJbqINcy
ではここからはC# おじさんどぞー
769デフォルトの名無しさん
2018/06/29(金) 00:13:26.39ID:9NU4CCEP
MSには新しいプログラミング言語のQ#があるから

Q# 【量子プログラミング】
http://2chb.net/r/tech/1513059627/l50
770デフォルトの名無しさん
2018/06/29(金) 00:20:17.66ID:1B/tcpoY
汎用言語でないからRustと競合はしないな
771デフォルトの名無しさん
2018/06/29(金) 05:02:04.02ID:HciN/Bk/
Visual StudioでRustサポートされないかな
rlsが不安定すぎるのでMSが作り直して欲しい...
772デフォルトの名無しさん
2018/06/29(金) 07:15:45.03ID:pVbM0h49
rlsもracerもポンコツよね
あんまり力入れてないのかな
773デフォルトの名無しさん
2018/06/29(金) 10:18:57.05ID:azKeAftH
intelliJ使えばええやん
インテリじゃない人もタダで使えるよ
774デフォルトの名無しさん
2018/06/29(金) 11:21:37.40ID:eINaY/I2
支援機能だけ考えるとそうなんだけどさ
手に馴染んだemacsから離れるのは簡単じゃない
775デフォルトの名無しさん
2018/06/29(金) 12:06:31.66ID:1B/tcpoY
ワイもIDE使いこなせない
776デフォルトの名無しさん
2018/06/29(金) 12:09:37.82ID:l0U/js7n
intellijをつかうのです…
vsなんかよりよっぽどいいですよ…
777デフォルトの名無しさん
2018/06/29(金) 12:09:46.01ID:ZOJKMSLg
>>763
従来のborrow checkerの制約が緩くなるだけだから従来の理解してれば不自由なく使えるはず
778デフォルトの名無しさん
2018/06/29(金) 12:27:36.55ID:1B/tcpoY
intelij買ったけどemacs使っちゃうのよね。コード書くのにmouseが必要になるのが受け付けないみたい。
779デフォルトの名無しさん
2018/06/29(金) 18:17:46.77ID:HciN/Bk/
intellijちゃん自力でパースしてるのアホでしょ
CLionもclang使わず自力でやってるけどリリースから随分経つのに初歩的なバグ残ってるみたいだし
780デフォルトの名無しさん
2018/06/29(金) 18:55:33.43ID:abdfGqyU
>>734の方法だとこんな感じなのかな
enum ABC {}
#[link(name = "・・・")]
extern {
 fn func1(x: *const u8) -> *mut ABC
 fn func2(y: *mut ABC);
 fn func3(z: &*mut ABC);
}
fn main() {
 unsafe {
  let a = func1("foo.dat".as_ptr()); //C側でメモリが確保されアドレスが帰ってくる
  func2(a); //アドレスを使って処理
  func3(&a); //確保したメモリを解放(以降aを触ってはいけない)
 }
}
中身にアクセスしたいならenumを#[repr(C)]付きのstructにして構造を定義すればいいのかな
読み書きするRustのコード全てをunsafeにする必要がありそうだけど
781デフォルトの名無しさん
2018/06/29(金) 20:25:27.91ID:jUvi1FZV
英語は多めに見るおじさん、今頃rustについて必死で勉強して弱点探してるのかな
782デフォルトの名無しさん
2018/06/30(土) 01:38:16.37ID:bJf+PXWq
>>780
func1とfunc2は関数プロトタイプがわかるけど
fn func1(x: *const u8) -> *mut ABC; → ABC* func1(const char *x);
fn func2(y: *mut ABC); → void func2(ABC *y);
fn func3(z: &*mut ABC);に相当するCのプロトタイプはないよね?
783デフォルトの名無しさん
2018/06/30(土) 01:40:31.49ID:bJf+PXWq
func1のxはu8だからunsigned charかuint8_tだね
784デフォルトの名無しさん
2018/06/30(土) 01:59:30.31ID:VVUAg8sI
>>782
func1の引数はRustのコンパイラにその型を使えと言われたから
func2の引数はfunc1の返値に合わせた
func3の引数はfunc1が返したアドレスが格納されているアドレス。Cで言うポインタのポインタでABC **z
自分も詳しいわけではないので勘違いしているかもしれないが一応動いている
785デフォルトの名無しさん
2018/06/30(土) 05:09:23.98ID:bJf+PXWq
>>784
ダブルポインタだったのか
それならvoid func3(ABC **z); → fn func3(z: *mut *mut ABC);

let mut p = func1(...);
let pp = &mut p as *mut *mut ABC;
func3(pp); // 単にfunc3(&mut p)で大丈夫なはず
786デフォルトの名無しさん
2018/06/30(土) 11:01:24.70ID:6fEIEQu0
ダブルポインタはあんま想定してなさげな気はする。
俺だったらもう一枚、インターフェイスかましてもう少し楽なインターフェイスにしてから
rustと繋げるわ。
787デフォルトの名無しさん
2018/06/30(土) 11:27:27.95ID:BB0BPsjY
結局C/C++ある程度わかってないと話にならないよね。
経験ないやつはいきなりrust勉強してる場合ではない。
788デフォルトの名無しさん
2018/06/30(土) 12:46:04.79ID:gEYLih9T
コンパイルできないならまずプログラミングを勉強しなおしたほうがいいよ
789デフォルトの名無しさん
2018/06/30(土) 14:28:27.26ID:d1l1Trl+
FFIの話をrust全体の話に主語をでかくしてるおっさんがおるな
790デフォルトの名無しさん
2018/06/30(土) 16:28:11.02ID:oxrLiD+S
FFIもrustの魅力の一つなのですが?
C/C++知らないやつはいつまでたってもrustを全て分かったことにならない
半人前のまま
別に必要なとこだけ使うスタンスでもいいけど半人前のクセにいっぱしのrustプログラマーヅラしないでね
791デフォルトの名無しさん
2018/06/30(土) 16:34:04.77ID:WiulWXxB
昔はアセンブラ知らずにC++語るなとか言われてたが時代は変わったもんだな
792デフォルトの名無しさん
2018/06/30(土) 16:40:34.19ID:jlw7G6p9
結局どの言語を選べばいいのかわからなくなった
C++?Go?
793デフォルトの名無しさん
2018/06/30(土) 17:06:44.52ID:NH6TT+Fu
Coqを選べばいいと思うよ
794デフォルトの名無しさん
2018/06/30(土) 17:07:23.25ID:QJJEkoJ9
目的に合ったもの
やりたいものをやればいい
795デフォルトの名無しさん
2018/06/30(土) 17:07:54.55ID:5+sKgUjT
迷うならGoでいいんでは。
796デフォルトの名無しさん
2018/06/30(土) 17:10:05.48ID:CMs/fWc6
Prolog
797デフォルトの名無しさん
2018/06/30(土) 17:38:54.49ID:RHrrdh8p
rustを視野に入れながらgoという選択はない
kotkinかswiftかgoかってなら分かるけど
798デフォルトの名無しさん
2018/06/30(土) 17:52:45.29ID:5+sKgUjT
分からないなら無理してrust使わなくていいって意味じゃろ
799デフォルトの名無しさん
2018/06/30(土) 18:08:54.39ID:9Q6R3Qzj
腐ってないでお前らも俺と一緒にRustで競技プログラミングしようぜ!

https://yukicoder.me/submissions?submitter=5971
800デフォルトの名無しさん
2018/06/30(土) 18:21:37.09ID:UB7qEnEv
クロージャで再帰が出来ないのって所有権的な問題?
801デフォルトの名無しさん
2018/06/30(土) 18:24:45.75ID:cH9c2bse
rustは競プロには向かない
https://users.rust-lang.org/t/rust-for-competitive-programming/17682
802デフォルトの名無しさん
2018/06/30(土) 18:38:35.11ID:cH9c2bse
クロージャの再帰ってこれのこと?

recursion - Is it possible to make a recursive closure in Rust? - Stack Overflow
https://stackoverflow.com/questions/16946888/is-it-possible-to-make-a-recursive-closure-in-rust
803デフォルトの名無しさん
2018/06/30(土) 18:57:41.58ID:dTg1EP/S
>>802
おー、できた
ありがとう
ローカル関数だと外部変数キャプチャできないし、クロージャだと再帰できないし、
同時にしたいときどうすんのかなーって思ってたから
そんなに使うこともないだろうけど、心に留めときます
804デフォルトの名無しさん
2018/06/30(土) 22:59:14.25ID:pdhum8J2
>>785
ありがとう。なるほどそういう書き方もあるのか。確かに書き換わるので&mutの方が適切ですね
欲しいのはアドレスなのだからと単にアドレス演算子&を付けていました

unsafe外から任意のアドレスにあるデータへアクセスするにはその部分を関数化するようなのかな
一般的に言うプロパティの読み書きをプログラマブルに出来れば綺麗に書けるけど無理なんだろうなぁ
()無しの関数呼び出しとも言えるけどこれが出来る言語は少ない
805デフォルトの名無しさん
2018/06/30(土) 23:04:00.05ID:BB0BPsjY
相変わらず驚き最大の言語だな
806デフォルトの名無しさん
2018/07/01(日) 07:43:42.19ID:XZ+Fcjv4
>>805
例えば何に驚いてんの?
Rustの目的はシステム言語だが、目的から乖離してるとこって何?
807デフォルトの名無しさん
2018/07/01(日) 08:30:53.21ID:vf9gJxu2
マルチパラダイムの場合、驚き最小の原則の法則に反するかどうかは実装者の責任じゃないだろうか
808デフォルトの名無しさん
2018/07/01(日) 08:46:31.97ID:E4o6QfBe
抽象的なことしか言わなくなったんだよ
機械語のレベルと相性が悪いし
809デフォルトの名無しさん
2018/07/01(日) 11:50:23.63ID:YY7LPhac
>>807
半分はその通りだが、それならc++で良くね?になるぞ。
810デフォルトの名無しさん
2018/07/01(日) 13:30:01.00ID:TGjVBuJr
日本語でこんなに議論が行われてることに驚いた
811デフォルトの名無しさん
2018/07/01(日) 13:37:40.54
恥ずかしくて外国人には見せられない掲示板だ
812デフォルトの名無しさん
2018/07/01(日) 13:54:17.46ID:YY7LPhac
そもそもcの呼び出しはメモリ管理モデルのギャップがあるんだから
どうあがいてもc++のが簡易にできるのは当然なんだよ。
813デフォルトの名無しさん
2018/07/01(日) 15:26:57.84ID:HnzLcrw0
>>810
このスレは英語推奨だぞ
814デフォルトの名無しさん
2018/07/02(月) 01:23:28.76ID:5g9b1rVY
>ローカル関数だと外部変数キャプチャできないし、クロージャだと再帰できないし、
ここに関してはクロージャでないものをクロージャと呼ばなければ誰も驚かなかっただろうな。
javaは似非クロージャのことはラムダ式と呼んでるし。
815デフォルトの名無しさん
2018/07/02(月) 01:51:37.55ID:v1kLQBFZ
Haskellの「外側のシンボルを参照することによる暗黙的な部分適用」はクロージャと呼ばれてるから
アレが許されるなら少なくともJavaのはクロージャと呼んでいい
816デフォルトの名無しさん
2018/07/02(月) 22:14:52.04ID:KKQokwkO
>>815
javaのアレは元々クロージャ導入するつもりが、
仕様と実装でクソ揉めて妥協案としてクロージャ
じゃないものとしてラムダ式を作ったんやで。
だから意図的な"クロージャではないモノ"よ。

メモリ管理にgc使うからエンクロージャの束縛の解放に
制限ないから実質クロージャだし第一級関数だけど。
817デフォルトの名無しさん
2018/07/02(月) 22:54:50.18ID:F0SAJ301
hyper使って簡単なwebアプリ描いてみたけどわりと素直に書けるのね
818デフォルトの名無しさん
2018/07/03(火) 16:24:59.60ID:ZNPbo2Ku
>>803は本当に満足してるのだろうか
>>802のやり方だとパラメータ増えてるじゃん
こういうのは既存のシグネチャに合わせられないと
単にひとつの関数を小洒落た書き方にしてみましたってだけにしかならないのでは
819デフォルトの名無しさん
2018/07/03(火) 17:05:40.29ID:ZNPbo2Ku
連投になって申し訳ないが、環境をRefCellで持ち出す例を見つけた
https://wandbox.org/permlink/hkwccgD2oXp0fTm7
組み合わせて、802の2番目の例のstructを更にRefCellに入れたらシグネチャ変えずに行けるかな
820デフォルトの名無しさん
2018/07/03(火) 17:29:45.80ID:LuUToNY2
>>818
一応満足してるよ
スッキリ書けないことがわかったから、素直にループで書くか、ローカル関数作って引数で渡そうと思えた
Rustは関数型じゃなくて手続き型だし、特に不満ではない
821デフォルトの名無しさん
2018/07/03(火) 17:31:22.43ID:nNrfrM83
>>819
RefCell使うなら、Rustで書く意味ないだろ
822デフォルトの名無しさん
2018/07/03(火) 18:19:36.75ID:ZNPbo2Ku
>>820
すまん、クロージャでないとできない用途(環境をキャプチャーして高階関数に渡す等)を想定していると
勝手に気を回してしまったみたいだ
823デフォルトの名無しさん
2018/07/03(火) 21:26:26.07ID:9JOKXkQl
クロージャじゃないとできない用途って具体的にどういうものなの
想像つかなかったので単純な興味本位
824デフォルトの名無しさん
2018/07/03(火) 21:32:07.93ID:2DeV5pvZ
例えば最適化ライブラリなどに目的関数を渡す場合などで
引数以外からパラメータを注入する必要がある場合。
825デフォルトの名無しさん
2018/07/03(火) 22:38:00.99ID:9ONgpSq2
>>822
キャプチャ自体はクロージャで出来るから別に困ってないかな
たまたま再帰させたくなったときがあっただけだから
826デフォルトの名無しさん
2018/07/03(火) 23:58:54.50ID:6KvlcSKZ
クロージャじゃなきゃできないことじゃなくて、
クロージャの再起呼び出しじゃなきゃできないことを聞きたかった
引数以外のパラメーターを差し込む場合、普通は再起は必要ないよね
827デフォルトの名無しさん
2018/07/04(水) 00:52:48.93ID:MQVza7QA
風雲再起ぃ~!!
828デフォルトの名無しさん
2018/07/04(水) 01:08:42.88ID:ace/1w5F
1.28はrustdocするときソースコードのlintするようになったんの?
deny属性に違反するソースコードがドキュメント生成時にエラー投げる。

>>822
クロージャがある言語は普通、関数とクロージャ区別しないからその感覚はおかしくないと思う。
でもクロージャの実装上の制約とかライフタイムとかでループで書いたほうがいいと思うコードはある。
829デフォルトの名無しさん
2018/07/04(水) 09:35:17.80ID:7aH0kDWz
>>826
それは、てっきり最初の>>800がキャプチャと再帰を同時に使いたいことがあったんとばかり
830デフォルトの名無しさん
2018/07/04(水) 20:54:21.49ID:1R4S9ii/
>>826
ある種の動的なtree構造に対して探索、実行を繰り返すとか。。
やっぱ具体的じゃねーな。。
831デフォルトの名無しさん
2018/07/04(水) 21:42:58.93ID:JvJNYHQo
最近rustの勉強始めたものです
この言語ってstatementなのかexpressionなのかをどういう方針で決めてんでしょう?
ifがexpressionなのはわかったけど、letはなぜstatementなんだろ?
他の関数型言語のようにexpressionでもよかろうに、と思った
832デフォルトの名無しさん
2018/07/04(水) 21:53:13.67ID:gFgZc5FG
KCX
833デフォルトの名無しさん
2018/07/04(水) 23:31:21.37ID:kqLSfqeN
古いCで良く在る if ( (let a = f()) != 0 ) {} みたいなのが嫌だったんだろう。
そもそも、変数束縛が値を持つ必然性は無いよね。
834デフォルトの名無しさん
2018/07/04(水) 23:32:39.47ID:kqLSfqeN
>>833
あ、ごめん。大嘘だった。
if let なんてのあったのね…
835デフォルトの名無しさん
2018/07/05(木) 00:07:01.10ID:wS7IFFVg
他の関数型言語のletは随分来歴が違うイメージ。
let x = ... in expはラムダ式の糖衣構文の一種なので関数型なら容易に実装できて便利に使えるのに対し、
rustのletは手続き型の変数宣言の方が近い

schemeのletとdefineが全然意味が違うのを知ってると違和感無い
836デフォルトの名無しさん
2018/07/05(木) 00:16:12.98ID:OgxnbJsr
>>831
この辺読めばいいかと。
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/functions.html#%E5%BC%8F%E5%AF%BE%E6%96%87

letは所有権移動だけど、返り値を認めちゃうと
束縛先と返り値のどちらに移動すべきか分からない、ということかな。
837デフォルトの名無しさん
2018/07/05(木) 00:52:35.42ID:YJbjvjoP
>>836
それは let a = (let b = c) がだめな理由にはなるけど
>>831の言ってる関数型言語風の let a = (let b = c in d) がだめな理由にはならないよね
838デフォルトの名無しさん
2018/07/05(木) 01:22:02.41ID:DZKRf+tO
えっ、毎回コピーすんの?
それ無駄じゃね?
839デフォルトの名無しさん
2018/07/05(木) 03:33:15.42ID:CGu9cAAd
>>837
ブロック式で let a = { let b = 1; let c = b + 1; b + c }; と書ける
けどミュータブルな変数を書けるからコードが関数型言語風になるかどうかは書き手次第
840デフォルトの名無しさん
2018/07/05(木) 20:22:41.90ID:yHZEHedG
>>836
>>839

ほー勉強になりました
fnもいまいち釈然としないけど
もうちょっと読み進めてみます
841デフォルトの名無しさん
2018/07/05(木) 21:13:46.28ID:nmRduEAc
あるstructもとに任意のフィールドを追加した別のstructを定義することってできる?
842デフォルトの名無しさん
2018/07/05(木) 21:35:03.85ID:wS7IFFVg
イテレータ系はみんなそれやってる
mapとかfilterとか、元のイテレータ+変換・フィルター関数みたいな構造体を返してくる
843デフォルトの名無しさん
2018/07/05(木) 22:08:25.13ID:uqSz2h6E
へー今気がついた
strはmutの有無にかかわらずRO領域に配置される
sliceはmutの有無にかかわらずRW領域に配置される
つまり今風のOS上だと
strをポインタ経由で書き換えようとするとメモリアクセス違反
sliceをmut無しで宣言した物でもポインタ経由で書き換えられる
リンカの設定にもよると思うけどマイコンなどで使うときは注意が必要そう
844デフォルトの名無しさん
2018/07/05(木) 22:15:27.91ID:B3fauv+j
えぇ…安全に使えないじゃん。キツツキに縛りつけてる意味ないじゃんrustの存在意義が…
845デフォルトの名無しさん
2018/07/05(木) 22:46:05.11ID:5CTMsWjW
再現コードはよ
846デフォルトの名無しさん
2018/07/05(木) 23:38:48.53ID:+dwFnTVE
unsafeの話でしょ
脊椎反射したいつもの人が見事に釣られている
847デフォルトの名無しさん
2018/07/05(木) 23:53:13.69ID:uqSz2h6E
もちろんunsafe中の話です
fn main(){
 let s:[i32;2] = [10, 20];
 println!("s[0]={}", s[0]);
 unsafe{*(s.as_ptr() as *mut i32)=30}
 println!("s[0]={}", s[0]);
}
実行結果
s[0]=10
s[0]=30
これそのものが問題になるケースは少ないだろうけど
ROにいるはずと思い込んでいるとハマるケースがありそう

任意の場所に配置するアトリビュートとかあるのかな
848デフォルトの名無しさん
2018/07/06(金) 00:07:24.39ID:0SVgWEm6
これのArrayのとこに書いてない?

https://doc.rust-lang.org/book/second-edition/ch03-02-data-types.html
849デフォルトの名無しさん
2018/07/06(金) 00:36:54.90ID:iypT0A6c
>>842
返すんじゃなくて定義したいんだけども
850デフォルトの名無しさん
2018/07/06(金) 06:49:56.18ID:Sybd3k2C
>>841>>849
stackoverflowとリファレンスを見た限りstruct定義の入れ子はサポートしてない
https://stackoverflow.com/questions/23629201/nested-structs-in-rust
https://doc.rust-lang.org/reference/items/structs.html
851デフォルトの名無しさん
2018/07/06(金) 18:21:10.44ID:iypT0A6c
どうもありがとう。でもちょっとニュアンスが違う。

struct 2d {x, y}
struct 3d extends 2d { z }

で3dが2dのxとyのフィールドと独自のzを持つようなかんじ
マクロで出来ないか精一杯やってみたが出来なかった
元となるstructごとにマクロ作ればできるんだけどそれじゃ意味ないし
852デフォルトの名無しさん
2018/07/06(金) 18:57:55.41ID:0SVgWEm6
設計見直したら?
853デフォルトの名無しさん
2018/07/06(金) 19:23:23.92ID:6zaAciaG
>>851
Rust Design PatternsにはDerefでやるのはアンチパターンだと書いてあるけど、別の似たようなサイトではお勧め扱いだった気がする
https://github.com/rust-unofficial/patterns/blob/master/anti_patterns/deref.md
854デフォルトの名無しさん
2018/07/06(金) 21:12:32.07ID:CzZn5kZZ
struct A {int size; char data[];}
みたいなのをRustから読み書きするインターフェイスを考えてみた
enum PTR {}
struct A {p:*mut PTR}
impl A {
 fn new(ptr:*mut PTR) -> Self {A {p:ptr}}
 fn get_size(&mut self) -> i32 {unsafe {*(self.ptr as *mut i32).offset(0)}}
 fn set_size(&mut self, n:i32) {unsafe {*(self.ptr as *mut i32).offset(0) = n;}}
 fn data(&mut self) -> &mut [u8] {unsafe{std::slice::from_raw_parts_mut((self.ptr as *mut u8).offset(4), self.get_size() as usize)}}
}
fn main() {
 let mut s:[u8;14] = [10,0,0,0,1,2,3,4,5,6,7,8,9,0];
 let mut x = A::new(s.as_ptr() as *mut PTR);
 println!("x.get_size()={}", x.get_size());
 println!("x.data()[0]={}", x.data()[0]);
 println!("x.data()[1]={}", x.data()[1]);
 x.set_size(7);
 println!("x.get_size()={}", x.get_size());
 x.data()[1] = 225;
 println!("x.data()[1]={}", x.data()[1]);
 println!("s[5]={}", s[5]);
}
実行結果
x.get_size()=10
x.data()[0]=1
x.data()[1]=2
x.get_size()=7
x.data()[1]=255
s[5]=255
美しくないコードだ・・・
メインのRustコードにunsafeを書きたくないので全てstructに突っ込んだらこうなった
dataはslice経由で比較的自由に読み書き出来るけど、sizeは任意のアドレスを挿している数値型の作り方が判らないので関数が2つに
855デフォルトの名無しさん
2018/07/07(土) 01:32:56.18ID:odAPlBjD
rustからrust-bindgenが吐いたC++のクラス使うのめんどくさいな
856デフォルトの名無しさん
2018/07/07(土) 18:52:04.06ID:Otm/KpKR
ところで、全然話変わるんだけどさ、mutってどう発音してる?
自分は「むっと」ってよんじゃってて、なんか、かっこわるいんだけど。
857デフォルトの名無しさん
2018/07/07(土) 19:12:39.63ID:HR9VVpP9
当然、「みゅっと」でしょ
858デフォルトの名無しさん
2018/07/07(土) 20:15:18.96ID:h+p+JRvo
怒ってるのね
859デフォルトの名無しさん
2018/07/07(土) 20:19:35.52ID:Ty8z3s6n
鬼太郎のCVほっぽりだして産休に入るみゅ
860デフォルトの名無しさん
2018/07/07(土) 20:58:49.46ID:PbU76+k2
mjúːtəbl
861デフォルトの名無しさん
2018/07/07(土) 23:03:04.65ID:cEw8AP4C
ミュート
862デフォルトの名無しさん
2018/07/08(日) 00:41:02.43ID:tBFClkmn
tanakhがrustのクロージャー再帰を望んでいる

https://twitter.com/tanakh/status/1015609559673475073
863デフォルトの名無しさん
2018/07/08(日) 11:33:21.07ID:6xrO+JsL
そりゃ入れないほうがいい証左になるなw
864デフォルトの名無しさん
2018/07/08(日) 13:33:35.86
みゅう太
865デフォルトの名無しさん
2018/07/09(月) 02:59:46.84ID:4B4QAQi1
>>862
いつまでtanakhなんてスパコン詐欺師を崇めるんだろうなこのスレの住人
866デフォルトの名無しさん
2018/07/09(月) 07:41:39.43ID:DXSSRVdR
国内の会社は大目に見てもらえないから大変だなあ
867デフォルトの名無しさん
2018/07/09(月) 09:23:25.63ID:6MpumzZl
NEDOとかダメだろ
868デフォルトの名無しさん
2018/07/09(月) 22:56:35.23ID:M/GPMU7W
「nvidiaの倒し方、知らないでしょ?オレらはもう知ってますよ」
869デフォルトの名無しさん
2018/07/10(火) 08:37:04.49ID:wS3GMIgw
実際green500で倒してるんだからたいしたものだよ
870デフォルトの名無しさん
2018/07/10(火) 14:26:10.12ID:+spxUUiC
https://github.com/saschagrunert/webapp.rs

これいいね、Webアプリを完全Rustで作成
871デフォルトの名無しさん
2018/07/11(水) 12:56:28.28ID:8BQ5VZH8
WebアプリをRustで書くって、どういう需要があるの?
ラズパイみたいな環境?
872デフォルトの名無しさん
2018/07/11(水) 13:05:53.98ID:A6luu057
車買ったらムダにドライブしたくなるじゃん。すぐ飽きるのに。
あんな感じ。
873デフォルトの名無しさん
2018/07/11(水) 13:08:35.26ID:uU0OdRlq
クライアントサイドとサーバサイドで同じコードが使えるって話ちゃうのん?
874デフォルトの名無しさん
2018/07/11(水) 13:30:09.56ID:QvLfDUJ3
同じ言語
だな
それはnode.js環境も同じだが
875デフォルトの名無しさん
2018/07/11(水) 13:31:28.26ID:QvLfDUJ3
期待できる点は速くて安全
876デフォルトの名無しさん
2018/07/11(水) 16:34:41.89ID:dzRS/LEU
全部rustって需要はあんまりない気がするけど、サーバ側ならかなりマッチしてる
877デフォルトの名無しさん
2018/07/11(水) 17:15:53.86ID:NEswxD4L
webassebly
878デフォルトの名無しさん
2018/07/11(水) 18:10:54.52ID:EHDLIx8N
サーバーサイド → Rust
クライアントサイド → Rust
ブラウザ → Rust
完璧じゃないか
879デフォルトの名無しさん
2018/07/11(水) 18:17:02.02ID:4XcPTXi0
Yewのベンチマークって他に誰か取ってた?
880デフォルトの名無しさん
2018/07/11(水) 18:46:56.99ID:8BQ5VZH8
やたらノンブロッキングに拘ってるけど、それが本当に必要な人ってごく一部だよね
人気サービスの中の人だけ
普通はスレッド立てまくりで対応可能だし、たまに台数増やすだけで問題ないでしょ?
881デフォルトの名無しさん
2018/07/11(水) 18:59:32.73ID:v5sVc8KX
だからそれは並列性が必要ってことでしょ
882デフォルトの名無しさん
2018/07/11(水) 19:13:29.64ID:A6luu057
真のアイルランド人はノンブロッキングなど必要としないwww
883デフォルトの名無しさん
2018/07/11(水) 20:14:09.83ID:IOg1uM7w
アイルランドいつ統一するん?
884デフォルトの名無しさん
2018/07/12(木) 20:27:33.26ID:vXAFXBtg
オライリーの奴予約した
885デフォルトの名無しさん
2018/07/12(木) 22:30:46.69ID:Wlqbcgdb
>>884
白紙の未来を絶望に染めてやろう。

あれもうかなり古いぞ。
rust 2018で今よりさらに変わるんだぞ。
エラーハンドリングもモジュールもTraitも重要な部分全部かわるぞ。
nightlyで結構実装済みだから現行のnightlyですら違うぞ。
macro 2.0はいいぞ!
886デフォルトの名無しさん
2018/07/12(木) 22:39:04.16ID:sU95dCXR
この仕事してるならそんなの普通じゃん
887デフォルトの名無しさん
2018/07/13(金) 00:41:53.18ID:MpWeaOSk
>>885
Rust 2018にエラーハンドリングの変更とかあったっけ?
Rust 2018での追加・変更って"module, impl trait, Generators/async/await, macros 2.0, NLL, SIMD"だけじゃなかったっけ?
もしかしてdo catchがstable化されるの?それとも、それ以外で変更があるの?
エラーハンドリングで互換性を崩すような変更があるならかなり痛いんだけど…
888デフォルトの名無しさん
2018/07/13(金) 04:40:11.96ID:7ZPDFHpF
https://github.com/rust-lang/rfcs/blob/master/text/2388-try-expr.md
2018からtryがキーワードとして予約される(catchは廃案)
editionが未完成だと実装できないから2018リリースにはきっと間に合わない
889デフォルトの名無しさん
2018/07/13(金) 08:17:48.56ID:wonLmOyY
RustもC++みたいに何年かおきに大きく変更されるの?
890デフォルトの名無しさん
2018/07/13(金) 10:05:43.27ID:U/mhKMvJ
こないだ1.0になったばかりな気がするんだが。仕事じゃつかえないな
891デフォルトの名無しさん
2018/07/13(金) 10:19:59.41ID:MpWeaOSk
こないだってもう3年前だぞ
C++が仕事で使えるんだから使えるだろ
てか、Swiftなんてもう4でそろそろ5になるとか言ってるんだぞ
あれが仕事で使えるんだからRustなんか楽勝だろ
892デフォルトの名無しさん
2018/07/13(金) 10:29:57.41ID:U/mhKMvJ
swiftなんてappleのDSL
893デフォルトの名無しさん
2018/07/13(金) 10:31:39.87ID:U/mhKMvJ
C99勢が砦
894デフォルトの名無しさん
2018/07/13(金) 11:07:37.12ID:sS4PjtpX
実際仕事で使っている人たちがいるのに使えないということは、別のところに問題があるのよ
895デフォルトの名無しさん
2018/07/13(金) 11:48:20.64ID:ERNuP0HI
安定性以前にまともにfibが書けない言語だから仕事じゃ使えない
896デフォルトの名無しさん
2018/07/13(金) 12:52:21.80ID:sS4PjtpX
突然の自己紹介
897デフォルトの名無しさん
2018/07/13(金) 13:54:10.99ID:GXltVmCz
>>50辺りの流れは何回見ても本当に秀逸
898デフォルトの名無しさん
2018/07/13(金) 15:05:24.82ID:KpXdroi9
車輪の再発明を抑止し過ぎるとnode.jsみたいになるからね
やり過ぎはだめってことよな
899デフォルトの名無しさん
2018/07/13(金) 15:40:42.13ID:5L9NPjD5
どゆこと?
900デフォルトの名無しさん
2018/07/13(金) 16:06:42.44ID:AcLm8Zma
たかだか一行二行のプログラムのnpmパッケージであふれ、しかも子孫含めた被参照ダウンロードが100万とかざらで、さらにそれがバグっている。
901デフォルトの名無しさん
2018/07/13(金) 17:28:42.65ID:vZnflVWC
Rust関係ないけど最近ArchLinuxのAURに細工されたパッケージが上げられててほんのちょっとだけ話題になったんだけど

正直自分が使うcrateやそれの依存関係まで含めて全部書いてる人が信用できるかとかソースまでチェックしてる人なんていないよね…?
イカンなぁと思いながら盲目的に使っちゃってるわ(´・ω・`)
902デフォルトの名無しさん
2018/07/13(金) 17:44:54.43ID:sS4PjtpX
CPUのL2キャッシュを作った人の叔母の恋人がテロリストがどうか気にするところから始めたほうがいいな
903デフォルトの名無しさん
2018/07/13(金) 17:46:33.55ID:U/mhKMvJ
某ファイルシステムの作者が奥さんを殺してしまってな
904デフォルトの名無しさん
2018/07/13(金) 18:29:15.55
怖いなぁ、戸締まりすとこ…
905デフォルトの名無しさん
2018/07/13(金) 19:36:34.68ID:wonLmOyY
そういえばRUSTという殺し合いをするゲームがありますね
906デフォルトの名無しさん
2018/07/13(金) 20:34:31.63ID:Cw5pkNzp
crate以前に詐欺企業Mozillaが信用できないから
907デフォルトの名無しさん
2018/07/13(金) 20:59:24.06ID:IpXdw+4i
Mozillaが詐欺企業なら、Mozilla以上に言う事やる事がコロコロ変わるAppleや
個人情報を収集しまくりのGoogleやMicrosoftはどうなってしまうんだろうなw
908デフォルトの名無しさん
2018/07/13(金) 21:16:35.53ID:Y3xd+pZ1
> 仕事じゃ使えない

おじさんのことじゃん
909デフォルトの名無しさん
2018/07/13(金) 21:19:05.39ID:EK55GFqW
crates.ioを見に行かないようにして、社内で確認済みのcrateしか置いてない社内リポジトリだけ
参照するような設定って出来るんだっけ?
910デフォルトの名無しさん
2018/07/13(金) 21:39:00.40ID:Y3xd+pZ1
RFCはあるみたいだけどまだ出来ないのかな
https://github.com/rust-lang/rust/issues/44931
911デフォルトの名無しさん
2018/07/13(金) 21:50:09.75ID:EK55GFqW
>>910
まだ半分も済んでないね
912デフォルトの名無しさん
2018/07/14(土) 00:26:44.88ID:nZvQhL00
>>909
cargoはそこらへん腐ってるから無理。
出来はするけどcrates.ioをクローンするツールの開発が
殆ど動いてないしクローンしてもそのローカルリポジトリを管理するツールがない。
ここらへんはoffline modeも絡んでくるけど、
どうせ欠陥機能作って廃止してまた作っての繰り返しでめちゃくちゃになるだけ。
913デフォルトの名無しさん
2018/07/14(土) 06:22:32.24ID:brBR1uF1
crates.ioのソースを持ってきてローカルに立ち上げてhostsで向ければ出来上がりじゃん
914デフォルトの名無しさん
2018/07/14(土) 06:46:24.80ID:W3qfg8ZM
cargoが便利コマンドすぎて、原始的な事がやりづらくなってる問題
915デフォルトの名無しさん
2018/07/14(土) 09:02:37.98ID:5xFWH4XP
便利っつーかモジュラリティーの低い構造になってるだけだろ。。
バカ設計だわ。
916デフォルトの名無しさん
2018/07/14(土) 10:21:42.77ID:7J+9ARNC
>>908
go使うよ。32bitsマシン以上向けならgoで十分だ。
917デフォルトの名無しさん
2018/07/14(土) 11:25:26.45ID:brBR1uF1
仕事じゃ使えないのは言語じゃなくてお前だって言われてるのに何故goが出てくる
918デフォルトの名無しさん
2018/07/14(土) 11:57:28.13ID:7J+9ARNC
Rust使えないから
919デフォルトの名無しさん
2018/07/14(土) 14:38:38.90ID:HNobJoZ0
Rust(が/を)使えないから
どっち
920デフォルトの名無しさん
2018/07/14(土) 14:41:53.11ID:6PGIbnJP
にほんごむずかしいあるね
921デフォルトの名無しさん
2018/07/14(土) 14:53:02.90ID:fAbuOpO3
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
922デフォルトの名無しさん
2018/07/14(土) 15:01:24.24ID:3YOZASYs
「機械語のレベルと相性が悪い」が "All your base are belong to us" みたいに見えてきた
なんかもう根本的に解ってないなっていう感じからくる面白さがある
923デフォルトの名無しさん
2018/07/14(土) 15:14:29.28ID:HNobJoZ0
モジラに職を奪われたおじさんと
そのおじさんの物まねをするおじさん達のスレ
924デフォルトの名無しさん
2018/07/14(土) 15:18:04.39ID:n16W1iUj
LLVMについていけないおじさん
925デフォルトの名無しさん
2018/07/14(土) 15:22:17.69ID:P7IB+4yp
Cやアセンブラなどの低レベルな処理と連動する場合unsafeを使わざるを得ないが、言語の仕様上普通に書くとunsafe祭りになってしまい
ソースコードの可読性が低下するのが残念。抽象化したくてもこれまた仕様的に完全な抽象化が出来なかったりするし
926デフォルトの名無しさん
2018/07/14(土) 15:47:47.15ID:7J+9ARNC
gcが有って良いならgo。 ない方が良いならnimってことか
927デフォルトの名無しさん
2018/07/14(土) 16:00:11.16ID:6PGIbnJP
まだ学習し始めたばかりでみんなが何を言っているのかよくわからない。
928デフォルトの名無しさん
2018/07/14(土) 16:53:11.51ID:QBMXvyuq
どいつもこいつも適当なことをそれっぽく言ってるだけだから気にしなくておk
929デフォルトの名無しさん
2018/07/14(土) 16:57:03.73ID:7J+9ARNC
ここはアンチの溜まり場だよ
930デフォルトの名無しさん
2018/07/14(土) 17:09:58.35ID:lldWHLOY
今日は本物がいないな
931デフォルトの名無しさん
2018/07/14(土) 17:28:07.35ID:veV9L5cz
>>926
一体いつからNimにはGCがなくなったんだ…?(困惑)
932デフォルトの名無しさん
2018/07/14(土) 17:41:12.64ID:/EttrqmU
>>930
狂人の真似をすれば実際狂人
つまりみんな本物のRustに職を奪われたおじさんなんだよ
933デフォルトの名無しさん
2018/07/14(土) 17:45:59.63ID:h94PG7c/
https://nim-lang.org/docs/gc.html
RustはできないしNimも詳しくない専門性なしのおじさん
934デフォルトの名無しさん
2018/07/14(土) 18:18:40.34ID:yo3MGbyq
お前らもモジカスに親を殺されてみろよ
935デフォルトの名無しさん
2018/07/14(土) 20:02:32.48ID:3YOZASYs
バトー「つまり、本物の "Rustによる被害者" というのは最初の一人だけで、 
    残りは全て模倣犯による狂言だったってのか?」

トグサ「ああ。狂言を読んだ者は初めのうちは怒りを覚える。
    だが、その理不尽な怒りを抱えきれなくなると、
    衝動的に自らが "Rustによる被害者" になりすますことで、
    狂言によって植え付けられた怒りを共有しようとしていたんじゃないか」

バトー「実在しない "Rustによる被害者" たちが連鎖するってわけか……。
    ── 最初の一人はとうの昔に死んじまってるのにな」
936デフォルトの名無しさん
2018/07/14(土) 23:00:52.98ID:6hFYodEH
>>922
懐かしいなAYBか。文法エラーを直しても通じないのがいいよなw
"All of your bases belong to us."
"お前らの卑しいものすべては我々に首ったけ"
ヒドイw
937デフォルトの名無しさん
2018/07/14(土) 23:51:21.23ID:5xFWH4XP
rustに職を奪われたおじさんなんて実際は存在しないわけだが。。
まあそういう人がいると思った方が幸せな人がいるのは事実。
938デフォルトの名無しさん
2018/07/15(日) 00:42:05.31ID:NkViXM6D
Rustに職を奪われたおじさんなんて名称なんてどうでもよくて
fibも書けない確かな"存在"がぐちぐち居座るせいで幸せになれない
939デフォルトの名無しさん
2018/07/15(日) 02:53:02.00ID:x6haH/8s
良かった。Rustに職を奪われたおじさんは居ないんだ。
940デフォルトの名無しさん
2018/07/15(日) 10:56:41.89ID:NalVqF46
NLLがstabilizeされたらfibを書けないおじさんもfib書けるようになって成仏できるよ
941デフォルトの名無しさん
2018/07/15(日) 11:00:28.92ID:rsj4GyZ/
>>940
「fibを書けないアホ」が「木構造を書けないアホ」に変わるだけと予想
942デフォルトの名無しさん
2018/07/15(日) 14:08:56.51ID:Um7D2OLN
rustでfibが書けたり、木構造が書けることをここまで自慢してくる輩って。。
943デフォルトの名無しさん
2018/07/15(日) 15:31:20.30ID:rsj4GyZ/
自慢も何もプログラマを名乗るなら最低限それくらい書けて当然だろ?ってこと
例えば、「俺は数学者だ」とか言ってる奴が微積分すら理解出来てなくて
「でも、因数分解ならできるし」とか言ってたら全力でぶっ叩くだろ?
つまりは程度の問題ってわけ
そして俺はRustでfibや木構造すら書けない奴はどうせ他の言語使ったって
ろくなコード書いてないだろうからそんな奴がプログラマを名乗るなんて片腹痛いわ!と思ってるだけ
944デフォルトの名無しさん
2018/07/15(日) 15:42:24.47ID:ppRXQOVy
このスレに迷い込んだ新規にはfibをどんな書き方をしたらrustで問題になるのか想像もつかない
945デフォルトの名無しさん
2018/07/15(日) 17:23:07.93ID:upVjqm6g
fibってなんですか?
946デフォルトの名無しさん
2018/07/15(日) 17:23:57.93ID:vPMHyt9R
>56でしょ?
fibがかけなくて5時間も喚いた挙げ句
答えを大量に示されても礼のひとつも言えない
下らない批評をしては論破されて潜伏を繰り返しているあほ
「rustに職を奪われた」「fibを書けない」もこいつの本質ではないんだよな
947デフォルトの名無しさん
2018/07/15(日) 17:58:08.24ID:f+8P4DFr
ここはネタスレなんで
948デフォルトの名無しさん
2018/07/15(日) 19:36:55.02ID:YZYcatpB
>>56もそもそも拾い物みたいだしなぁ…… (検索に引っ掛かる
949デフォルトの名無しさん
2018/07/15(日) 19:51:13.58ID:H2FcMtiY
ツイッターでrust-lang-ja.orgのドメインが~みたいな話が先月からあるみたいだけど
このスレでは誰も話題にしてない?
950デフォルトの名無しさん
2018/07/15(日) 20:03:03.01ID:NalVqF46
fib拾いものなのか
正しくないfibすら書けないおじさんだったか
951デフォルトの名無しさん
2018/07/15(日) 20:56:16.71ID:vPMHyt9R
https://www.google.co.jp/search?q=%E2%80%9Ca352230e08bc0a76fb5f116bd3c7abf4%E2%80%9C


>>949
検索にも引っ掛からないし誰が困るんだろう
952デフォルトの名無しさん
2018/07/15(日) 21:35:06.48ID:YZYcatpB
>>949
Slackでは話題に出てたけど ここでは出てないかな

>>951
流石にplaygroundには貼ったんでしょうね コード4行目で検索
953デフォルトの名無しさん
2018/07/15(日) 21:45:35.35ID:rsj4GyZ/
>>952
ほんとだ4行目だけを直接検索したら出た
しかも解決法までご丁寧に解説してあった
>>56はそれも読まなかったのか…
はたまた、読んでも理解できなかったのか…
954デフォルトの名無しさん
2018/07/16(月) 16:06:24.68ID:NRqWPJmE
推察するに日本語が読めなくて、「できない」だけで飛び付いたんだろうなあ
こんな奴でもC++は書ける(自称)って辺りが日本のプログラマの闇だな
955デフォルトの名無しさん
2018/07/16(月) 16:24:01.28
軽々しくC++書けるなんて口にしようものなら茂みからマサカリが飛んでくるぞ
956 ◆QZaw55cn4c
2018/07/16(月) 16:41:06.37ID:PLRcL5uS
C/C++ については、いつまでたっても「書ける」とはいいきれない存在ですね…
仕様が結構複雑だからなのか?
957デフォルトの名無しさん
2018/07/16(月) 18:39:02.08ID:NeMQsq8I
Rustは「書ける」んですか?
958デフォルトの名無しさん
2018/07/16(月) 18:52:42.01ID:tJPrOapS
Go使うよ。
959デフォルトの名無しさん
2018/07/16(月) 19:02:04.84ID:+TKchfUN
perlがライトオンリー言語なんて言われていたけどリードオンリー言語なんてのもあるんだな。
http://wiki.c2.com/?ReadOnlyLanguage

rustはノミネートされてないから「書ける」と思うよ(すっとぼけ
960デフォルトの名無しさん
2018/07/16(月) 19:32:53.55ID:PkmPgg8A
確かにAppleScriptは中途半端に英文風で多彩かつ何でこれダメなのってパターンも多くread onlyに相応しいな
昔はAdaの称号だったと思うが
961デフォルトの名無しさん
2018/07/17(火) 01:20:02.37ID:XTfqg8Os
Eclipse Corrosion使ってるやついないの?
962デフォルトの名無しさん
2018/07/22(日) 20:18:59.26ID:6WNc4gpj
Rustでプラグイン機構を持ったアプリを作る場合、本体とプラグインでjsonでやり取りするのが無難?
それとも動的リンクでいける?
963デフォルトの名無しさん
2018/07/23(月) 00:12:51.84ID:t7f2tjaz
jsonでどうやるんだ。
https://crates.io/crates/libloading
964デフォルトの名無しさん
2018/07/23(月) 00:44:55.55ID:CBB4e6ta
それOSやRustコンパイラがどういうコード作るかによるのでは?
なんとなく出来そうな気はするけど。
965デフォルトの名無しさん
2018/07/23(月) 07:41:05.29ID:NoHfy/qo
コンパイラのバージョンアップでABI変わる可能性があるから
* 本体とプラグインが同じバージョンでコンパイルされてることを保証する
* extern "C" なインターフェースだけ使う
とかの工夫は必要そう
966デフォルトの名無しさん
2018/07/23(月) 20:17:49.69ID:stexMLiC
プログラミングRust待ちきれないどす
967デフォルトの名無しさん
2018/07/23(月) 22:49:10.62ID:bEqql8cX
extern "C"してもバイナリ互換のない変更したら同じじゃね?
968デフォルトの名無しさん
2018/07/23(月) 23:00:36.98ID:83b6blUP
本体側からメモリマネージャをエクスポートして.dll/.so側に使わせるってできたっけ
969デフォルトの名無しさん
2018/07/24(火) 16:50:44.53ID:IQ4K3J0H
crates.ioで中身のない、クレート名の予約だけの人増えすぎじゃね?
970デフォルトの名無しさん
2018/07/24(火) 17:20:04.73ID:YqCWjlto
rustはweb周りをもっと押したほうがいいな
新しいのに飛びつくのはあの連中(俺も)だからな
971デフォルトの名無しさん
2018/07/24(火) 18:54:39.82ID:ycl+zs7h
未発達ってだけじゃ?
972デフォルトの名無しさん
2018/07/24(火) 18:57:59.94ID:WBO96fmU
壁乳
973デフォルトの名無しさん
2018/07/24(火) 21:23:06.95ID:T8M86aw1
未発達かな
hyperやactix webがあるじゃん
974デフォルトの名無しさん
2018/07/25(水) 02:08:39.39ID:41CwtA3+
未発達すき
975デフォルトの名無しさん
2018/07/25(水) 07:51:39.69ID:+nGh1Sgi
async awaitベースのtokioがでるまで待った方がよさそう
976デフォルトの名無しさん
2018/07/25(水) 08:16:02.41ID:y0Nnx33q
プログラミング言語Rust発売まだ?
はやくして
977デフォルトの名無しさん
2018/07/25(水) 08:52:37.24ID:UNILj0yW
今日からRustやってみる
C言語とPythonとSchemeがちょっとずつしか分からないけど大丈夫かしら
Rustで本格的にプログラミング覚えた人っていますかね...?
978デフォルトの名無しさん
2018/07/25(水) 09:02:21.28ID:HwnrNSAw
C++知らないと窮屈なだけで何でこんなもんが必要なのか意味不明じゃね
979デフォルトの名無しさん
2018/07/25(水) 09:06:22.95ID:3qeF0zvT
C出来るならありがたみ分かるだろ
980デフォルトの名無しさん
2018/07/25(水) 14:41:08.64ID:XJO2lY6I
Ready at Dawn Studiosって言うアメリカのゲーム会社が今後の開発は全てRustでするってよ
981デフォルトの名無しさん
2018/07/25(水) 15:40:42.61ID:lJ8T3l+q
泡沫ゲームメーカーの
982デフォルトの名無しさん
2018/07/25(水) 16:44:51.58ID:hO+Od1/n
海外だから多めに見てもらえる
983デフォルトの名無しさん
2018/07/25(水) 21:16:35.03ID:ZMLutfsH
新しい言語だからrustからって人はなかなかいないと思うけどおすすめだな
根気は必要だけど
984デフォルトの名無しさん
2018/07/25(水) 22:34:33.87ID:vRPwEy8/
これPHPが2%もあってPHPの代わりになるほどRustはまだ便利ではなさそうだな

https://github.com/imos/icfpc2018
985デフォルトの名無しさん
2018/07/26(木) 04:24:33.95ID:5ROtQy7H
比較対象間違ってないか?
986デフォルトの名無しさん
2018/07/26(木) 07:18:30.27ID:shfmC2IZ
意味不明すぎて笑ってしまった
987デフォルトの名無しさん
2018/07/26(木) 19:48:41.24ID:HNM3rm3+
初心者スレ無いようなのでここで質問させてください
トレイトって他の言語で言うところのインタフェースみたいなもん?

https://doc.rust-lang.org/rust-by-example/trait.html

trait Animal {
fn new(name: &'static str) -> Self;
}
impl Animal for Sheep {
fn new(name: &'static str) -> Sheep {
Sheep { name: name, naked: false }
}
}

この、Selfを使うようなことはインタフェースじゃできないよね?
1) Selfを使える
2) 独自クラスの定義にのみimplementsできるインタフェースと違って
  既存の型に対してあとからいつでも実装を保証?できる
のがトレイト?
988デフォルトの名無しさん
2018/07/26(木) 20:34:56.63ID:1GO/F9JV
Selfが使えるかは言語の特徴でtraitの特徴じゃないんじゃない
あと外部で定義されたtraitを外部で定義された型には実装できない制限がある
989デフォルトの名無しさん
2018/07/26(木) 21:47:50.04ID:ZKUcprSN
sheep.nakedがfalseなのはバグじゃまいか
990デフォルトの名無しさん
2018/07/26(木) 23:37:04.68ID:MvIVysXV
お前らそれよりtraitがコンストラクタ持ってることにツッコめよ。

Ready at DawnってCSやってたけどあれもrustで書くつもりだろうか。
991デフォルトの名無しさん
2018/07/26(木) 23:47:35.69ID:e6WqSqyg
コンストラクタ?
992デフォルトの名無しさん
2018/07/27(金) 06:21:45.73ID:iaaPZbOX
質問するための例でしょ、野暮だなあ
993デフォルトの名無しさん
2018/07/27(金) 07:58:08.97ID:siMrDeDP
write!マクロってキモい

https://play.rust-lang.org/?gist=630529d9c9c65ee7e3a7ea9a2524e841&;version=stable&mode=debug&edition=2015
994デフォルトの名無しさん
2018/07/27(金) 08:11:14.41ID:siMrDeDP
write!マクロって本当キモい

https://play.rust-lang.org/?gist=54a890fbc7093117363802bf84a9cd0a&;version=stable&mode=debug&edition=2015
995デフォルトの名無しさん
2018/07/27(金) 13:30:16.26ID:Rp6Nmdy5
>>905
gowにはrustlungちう病気が出てくるぞ
996デフォルトの名無しさん
2018/07/27(金) 20:15:16.26ID:/aLVAKNj
>>988 ありがとうございます!もっと勉強します
997デフォルトの名無しさん
2018/07/27(金) 21:04:57.34ID:/aLVAKNj
>>990-992
そこなんですよ
コンストラクタをトレイト側にかけちゃうのが何か凄み感じるんですよ
インタフェースじゃせいぜいObject型で返すくらいのもんでして
998デフォルトの名無しさん
2018/07/27(金) 21:53:15.63ID:454wB1N8
あ、これはやばい理解パターンだ。。
999デフォルトの名無しさん
2018/07/27(金) 22:10:22.71ID:lEyToVsI
インターフェースは型だけどトレイトは型じゃないって気付いたときに理解が進んだ音がした
1000デフォルトの名無しさん
2018/07/27(金) 22:22:18.00ID:T6fu2z+/
Rust part6
http://2chb.net/r/tech/1532697692/
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 166日 2時間 14分 54秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

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



lud20250524231406ca

ID:Syz4zWn3のレス一覧:


398デフォルトの名無しさん
2018/04/14(土) 17:24:46.46ID:Syz4zWn3
解放の仕方を実装したら、後はコードのどの場所で何回確保しても自動で解放される事が分かってないっぽいね
399デフォルトの名無しさん
2018/04/14(土) 17:31:29.95ID:LmbQudMt
>>398
だってRAIIもスマポも知らないんだもん。しょうがないじゃん
400デフォルトの名無しさん
2018/04/14(土) 17:34:05.03ID:nFvlFlcl
>>397
C FFIとかの一部分で解放処理を書くんだよ
お前が言ってる通り「手動」だしお前の好きな「手動」でよかったな
中途半端にとは言っても機能するし「無意味」と言い切るには典型すぎる誤謬

>>395にまともに答えてくれる?どう相性が悪いの?どんなアプローチ?
401デフォルトの名無しさん
2018/04/14(土) 17:50:25.61ID:TDyE7icd
>>400
今の説明でわからんなら一生わからんよ
402デフォルトの名無しさん
2018/04/14(土) 17:56:25.03ID:LmbQudMt
>>401
あっ! 逃げたww
403デフォルトの名無しさん
2018/04/14(土) 18:04:42.44ID:nFvlFlcl
Q. Rustの何がどう機械語との相性が悪く、それに対してC/C++のまともなアプローチの具体例を教えて
A. 結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良い

Rustアンチ君との最後のやり取りがこれなのか…?悲しい
404デフォルトの名無しさん
2018/04/14(土) 23:45:32.28ID:lczq2IdA
いい加減ワッチョイスレに移動しようぜ
405デフォルトの名無しさん
2018/04/14(土) 23:54:45.22ID:LmbQudMt
>>404
実際問題ワッチョイは過疎る
406デフォルトの名無しさん
2018/04/15(日) 03:16:54.39ID:8wseEBgk
>>404
YOUがワッチョイのほうで話題ageれば
407デフォルトの名無しさん
2018/04/15(日) 09:21:32.45ID:eccSQZbu
ここはネタスレだからこれでいいよ

まともな話題ないし
408デフォルトの名無しさん
2018/04/15(日) 10:16:53.40ID:pCFT19cL
ワッチョイは運営が管理を放棄するための口実
409デフォルトの名無しさん
2018/04/15(日) 10:33:02.44ID:E1b18XLI
ワッチョイあった方が良い派です
410デフォルトの名無しさん
2018/04/15(日) 11:32:28.09ID:fK7P6CAL
いちおう指摘しておくと以下にわっちょい付きのスレはある。
http://2chb.net/r/tech/1514107621/l50
411デフォルトの名無しさん
2018/04/15(日) 14:26:16.16ID:WuS7UUJE
そう思うんなら勝手にそっちでやってくれ
いちいちこっちに宣伝しないでよろしい
412デフォルトの名無しさん
2018/04/15(日) 14:57:22.17ID:eccSQZbu
せめてスレ立てたやつくらいはあっち書き込んでくれよ。
ワッチョイスレ(本スレ)には俺しかいない。
413デフォルトの名無しさん
2018/04/15(日) 15:05:21.27ID:6SePuRaV
人が集まってる(勝ち残った)方が本スレ
414デフォルトの名無しさん
2018/04/15(日) 16:17:50.87ID:vLrea5+q
アンチスレの方が人多いっていい加減認めようぜ
415デフォルトの名無しさん
2018/04/15(日) 20:40:55.33ID:oxsxYGoa
>>414
いちおうアンチスレも存在するんだぜ
http://2chb.net/r/tech/1509028624/
416デフォルトの名無しさん
2018/04/15(日) 21:13:20.51ID:0BluVJwA
>>384
大元に言わないで、ここでグダってる時点で説得力無いけどな。
417デフォルトの名無しさん
2018/04/16(月) 09:16:50.73ID:fU1aO3Gb
英語で説明する気力がないんだろ
418デフォルトの名無しさん
2018/04/21(土) 15:59:38.16ID:GAOK2TS0
それもあるが日本語の記事でrustマンセーしてるやつは大抵バカっていうのもある。
419デフォルトの名無しさん
2018/04/21(土) 18:22:00.01ID:u/5OPPGG
会話になってないし
時間おいたところで>>395に答えなくてもいいことにはならないからね
420デフォルトの名無しさん
2018/04/22(日) 12:28:50.40ID:fDht+F2y
もう答えた
>>397
421デフォルトの名無しさん
2018/04/22(日) 15:34:45.59ID:4jEar62+
自分から「機械語のレベルと相性が悪い(>>378)」と言ってるのに
「具体的にはどういうこと?(>>395)」と聞かれて、
その返答(>>397)に機械語のことが一切出てこないのは流石に草
422デフォルトの名無しさん
2018/04/22(日) 20:55:11.63ID:jr6NU+gW
英語で説明する以前に日本語でのコミュニケーションに難ありなのか
日本語ネイティブじゃない方なのかな
423デフォルトの名無しさん
2018/04/22(日) 22:58:46.99ID:lYpO0H1A
機械語との相性のいいC,C++のソリューションって、機械語バイト列を関数ポインタにキャストして呼び出すとかじゃないの?
そんなことRustでできるようになって欲しくはないな。
424デフォルトの名無しさん
2018/04/22(日) 23:13:49.80ID:KagmHCpN
できるよ
推奨してないけど
425デフォルトの名無しさん
2018/04/23(月) 00:45:39.39ID:Fi1E6adA
JITとかそういう用途?
426デフォルトの名無しさん
2018/04/24(火) 00:26:37.67ID:IHcLIR+Z
rustで書かれたjitなかったっけ?

ところでrustで書かれたウィルスとかマルウェアとかないよな。
goならMiraiで使われてたけど。
427デフォルトの名無しさん
2018/04/27(金) 21:30:01.00ID:Tx6nrcMv
C/C++の弱い型付けによるキャストは機械語と関係ないだろ
Rustは強い型付けしか原則許してなくてunsafe使えば弱い型付けも出来るけど好んでする必要性はないよねー

プログラミング言語と機械語の間はC/C++もRustもLLVM IRで仲介されてるから、どっちかだけが相性良いとかなさそう
LLVM IRじゃなくGas仲介するとこう違うんだよ、くらいの反論を期待してみるテスト
428デフォルトの名無しさん
2018/04/27(金) 23:30:19.86ID:AfC0onIC
>>427
フロントエンドの話してるのに、バックエンドがLLVMだから違いなどない!は、おかしいのでは?
そんなこと言い始めたら、言語仕様の優劣など語るに値しないということになってしまう。
429デフォルトの名無しさん
2018/04/27(金) 23:43:23.39ID:MR18u0zM
>>427
Any使ったdowncastはunsafeじゃないけどどういうコードの話してんの?
430デフォルトの名無しさん
2018/04/28(土) 16:19:50.16ID:6S6rcsk3
このRustのチャットみたいなのって公式のもの?

https://gitter.im/rust-lang/rust
431デフォルトの名無しさん
2018/05/01(火) 14:27:18.61ID:riKaEN0n
rustでフォントをレンダリングしたいのですがfont-rsやfreetypeなどの設定逆引き的なサイトってありませんかね?
チュートリアル的なサイトは見つかるのですがそこから突っ込んで使用したい場合に参考になりそうな情報がみあたらないです
レンダリングされる線を任意の幅にしたいです
極細フォントを使って線幅1ピクセル×2=計2ピクセルでアンチエイリアス無しみたいな感じの結果が欲しいです
432デフォルトの名無しさん
2018/05/01(火) 14:37:54.06ID:riKaEN0n
具体例を補足します
出力が2値の場合に普通にレンダリングした物を減色してしまうと線幅の不均一になったりディザが掛かってしまって
表示品質が極端に悪くなってしまうのでそれを防止したいです
たとえば「田」みたいな字をレンダリングして減色するとある線は1ピクセルだけど別の線は2ピクセルになってしまったり
交わるところに不要なドットが出現したりします
それを全て任意の線幅に統一したいです
433デフォルトの名無しさん
2018/05/01(火) 14:58:24.50ID:8Qa5eQjM
ここはアンチスレなので、まともな質問はslackへどうぞ
434デフォルトの名無しさん
2018/05/02(水) 04:26:15.76
えぇ。。
435デフォルトの名無しさん
2018/05/02(水) 04:45:47.66ID:JZRYx+4v
https://rust-jp.herokuapp.com/

rustのslack
↓のサービス使ってオープンにすればよい
http://slackarchive.io 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)
436デフォルトの名無しさん
2018/05/02(水) 11:08:56.76ID:C2OG+VM0
Rustってカルトみたいなもんだよな
実態はスカスカで教祖の金儲けに使われてるだけなのに、信者は正義と信じて疑わない辺り

slackなんて内輪の集会に逃げ続けて表の評価に曝されることを避けてる時点でまともなプログラミング言語じゃない
437デフォルトの名無しさん
2018/05/02(水) 11:13:07.30ID:9TOinEtH
>>436
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
438デフォルトの名無しさん
2018/05/02(水) 11:39:02.32ID:C2OG+VM0
>>437
お前はさっさとその答え教えてくれよ
Rust批判するにしてもコンピュータの知識皆無すぎるわ。批判側がお前と同じ知的レベルに見られるのがクソ
439デフォルトの名無しさん
2018/05/02(水) 11:55:03.24ID:9TOinEtH
>>438
へー今日はたくさん書き込むつもりなんだ
440デフォルトの名無しさん
2018/05/02(水) 12:31:00.89ID:ZVrvL9q8
こちらはまともなアンチとキチガイアンチのスレになります。
441デフォルトの名無しさん
2018/05/02(水) 12:53:31.01ID:vKwn9vOL
いやどっちもキチガイだから
442デフォルトの名無しさん
2018/05/02(水) 12:58:01.18ID:vKwn9vOL
>>436
表の評価(2ch)wwww
443デフォルトの名無しさん
2018/05/02(水) 20:38:46.50ID:Ua9w95BC
少しずつRustの研究が出てきたね
https://arxiv.org/abs/1804.10806
444デフォルトの名無しさん
2018/05/03(木) 01:12:08.40ID:Sirn7AO1
win10 rs4にしてからrustdocが遅い。
rs4にMeltdown/Spectre対応のパッチも含まれてたんだろうか。
445デフォルトの名無しさん
2018/05/03(木) 02:54:28.33ID:Rj4yBmSF
Rustを導入している企業・組織の一覧をご覧ください


https://www.rust-lang.org/ja-JP/friends.html
446デフォルトの名無しさん
2018/05/03(木) 08:55:22.99ID:4wWpk2nD
Windows defenderが動いてるとかでは
447デフォルトの名無しさん
2018/05/03(木) 12:04:38.70ID:y3R7schb
少なくとも5chではgoよりrustの方が盛り上がってるな。
448デフォルトの名無しさん
2018/05/08(火) 01:41:55.63ID:jFUdx6HI
impl traitはよ
449デフォルトの名無しさん
2018/05/08(火) 21:29:46.74ID:RGDg6ogT
パフォーマンスとマルチスレッドを理由にRustを採用という事らしい

https://logmi.jp/282807
450デフォルトの名無しさん
2018/05/08(火) 22:15:52.43ID:W4Ax9FiD
ドワンゴといい、ヤバい会社の指標としていいねw
451デフォルトの名無しさん
2018/05/08(火) 22:23:27.27ID:T0pMALEX
機械語のレベルと相性が悪いしなw
452デフォルトの名無しさん
2018/05/08(火) 22:26:07.82ID:EnN/pyur
>>450
>>445
これでもそんな知恵遅れみたなこと言うの?
453デフォルトの名無しさん
2018/05/08(火) 23:31:08.80ID:W4Ax9FiD
同じリストを他言語でも作ってみたら?
どれだけバカなこと言ってるかわかると思うよ。
454デフォルトの名無しさん
2018/05/08(火) 23:52:08.90ID:EnN/pyur
ああそりゃ分かるだろうね、是非作ってみたまえよ
455デフォルトの名無しさん
2018/05/09(水) 00:11:01.28ID:ZcDO5kt6
>>449
謳い文句通りの「速度とマルチスレッド」で選んだら後でめんどくさいよ。
MIRの導入もなかなか成果出てないし、同期はセマフォ/ミューテックスしかなくて
javaみたいに高レベルから低レベルまで自分で書けるわけじゃないし、
non blocking ioも、lock free collectionもなくて外部ライブラリへの依存度が極めて高いし、
cargo腐ってるせいでrustのtooling絡みのissueが日に日に増えるし。

rustの良いところは言語の部分だからコアな機能使わないなら他言語のほうが良い。
土方の要求には合わないでしょ。

それよりimpl traitまだー?
456デフォルトの名無しさん
2018/05/09(水) 00:44:09.86ID:D/4RZNTl
間も無くなんだから静かに待ってなさい
457デフォルトの名無しさん
2018/05/09(水) 08:29:25.33ID:SINErtCB
>>449
これってgoでは無理だったんかね?
単純に趣味の問題?
458デフォルトの名無しさん
2018/05/09(水) 13:55:28.84ID:9bmRNzTn
goって言語仕様でマルチスレッドによるデータレースを起こさない仕組みってあるの?
無かったらその部分が大きいのでは?
459デフォルトの名無しさん
2018/05/09(水) 15:04:31.38ID:bH4TOh4o
goはchannel経由にすれば自動的にアトミック
mutex部分が隠ぺいされてるので意識する必要が無い
460デフォルトの名無しさん
2018/05/10(木) 01:52:41.29ID:8hhZ9q5s
むしろrustがなぜチャネル的なもの入れなかったんだ?
461デフォルトの名無しさん
2018/05/10(木) 02:11:20.77ID:71z1/J2u
標準にも外部crateにもいっぱいあるだろ
ライブラリとしてではなく言語仕様としてという意味か?
462デフォルトの名無しさん
2018/05/10(木) 10:12:22.36ID:sqBEyANZ
>>459
言ってることがよくわからんメモリ共有は基本的にmutexみたいな物はついてない気がするけど。基本的にchannel経由で情報交換しない方針にすれば
データ競合は防げるって話では?

rustってデータ競合がコンパイル時点で防げるって意味がわからん。
そんなことがかのうなん?
463デフォルトの名無しさん
2018/05/10(木) 10:16:06.63ID:sqBEyANZ
>>462
X 基本的にchannel経由で情報交換しない方針
○ 基本的にchannel経由で情報交換する方針
464デフォルトの名無しさん
2018/05/10(木) 10:17:49.30ID:sqBEyANZ
>>463
詳細はこちら
Goでスレッド(goroutine)セーフなプログラムを書くために必ず注意しなければいけない点
https://qiita.com/ruiu/items/54f0dbdec0d48082a5b1
465デフォルトの名無しさん
2018/05/10(木) 13:22:21.00ID:MOe7VLfi
数十GBのオブジェクト管理は、gc待ちきついからオフヒープでとか、(これ聞いたときよりgcは良くなってる)
goroutineで確保したメモリは解放せずgoが管理するから、常駐で同時に大量に走ると解放されないとかはあるみたい。
466デフォルトの名無しさん
2018/05/10(木) 13:35:12.76ID:71z1/J2u
>>462
それが売りの一つなんだから当然出来る
具体的にはこれでも読んでくれ

https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/concurrency.html
467デフォルトの名無しさん
2018/05/10(木) 18:25:01.25ID:0Uo+Yl5e
以下の場合に&*fで具体的にどうなってるのかが分からない
*でderefされてトレイトオブジェクトの実態になって、&を付けることで再度トレイトオブジェクトになってる?
ちなみにexec(f.deref())だとそのまま通るけど、これはBoxのderefが&Tを返すからだよね?
*だとBoxのderefで返った&Tではなく、さらにderefされてTが返っているってこと?


fn create() -> Box<Fn()> {
Box::new(|| println!("test"))
}
fn exec<F: Fn()>(f: F) {
f()
}
fn main() {
let f = create();
exec(&*f);
}
468デフォルトの名無しさん
2018/05/10(木) 21:37:45.30ID:r2ZBYv9N
Derefを実装した型に対しての*xは*x.deref()の糖衣構文
つまり、&*xは&*x.deref()と同じで、それはつまり、x.deref()と同じ
469デフォルトの名無しさん
2018/05/10(木) 22:16:14.49ID:0Uo+Yl5e
なるほど
*x ==x.deref() って言う認識だったのが間違ってたのか
ありがとう
470デフォルトの名無しさん
2018/05/12(土) 02:06:23.28ID:6a2pRrds
impl trait来たな
471デフォルトの名無しさん
2018/05/12(土) 14:27:50.20ID:CbmhA0Cx
きた
472デフォルトの名無しさん
2018/05/14(月) 08:56:23.29ID:+8ra2A+L
久しぶりにRustやろうと思ったけど公式リファレンスが最新版に追いついてないのな
どっかに変更履歴のまとめとか無いのかな
473デフォルトの名無しさん
2018/05/14(月) 12:00:52.07ID:fAXXTBeo
>>427
公式リファレンスって何のことを指してるんだ?
APIリファレンスならきちんと最新版に追従してるし、
チュートリアル(The Book)も2nd Editionがきちんと出てる
バージョンアップの追従ならリリースノート見るかRustの公式ブログ見れば大体分かると思う

Rustは6週間に1回のハイペースでマイナーバージョンアップ繰り返してるから
The Bookのほうは最新版に追いつくこと自体がほぼ不可能だと思うけど
(つい最近もimpl traitがstable化されたばっかりだし…)
474デフォルトの名無しさん
2018/05/14(月) 12:06:29.06ID:fAXXTBeo
>>473
間違えた
X >>427
>>472
475デフォルトの名無しさん
2018/05/14(月) 21:32:55.87ID:+8ra2A+L
そのimpl traitが気になってまたRustやろうと思ったんだけどね
全機能の索引みたいなのがないと学習効率が落ちる
476デフォルトの名無しさん
2018/05/17(木) 09:49:24.40ID:iDnHcMfd
rustって生産性高い?
安全性が高まって結果的に高くなるということではなくね
やっぱでかいプログラムじゃなきゃ使う効果ない?
477デフォルトの名無しさん
2018/05/17(木) 10:44:40.51ID:eZl7hMvh
Javaでnull参照が10億ドル単位の損害と言われてるので
RustはJavaより10億ドルほど生産性が高い
478デフォルトの名無しさん
2018/05/17(木) 11:16:01.90ID:mMzQfbWV
まあ、ネタにマジレスになるが、
その論法だと俺の未完成言語は誰もバグを生み出してないので
Rustより生産性が高いなw
479デフォルトの名無しさん
2018/05/17(木) 11:48:49.35ID:UfgM043o
>>478
分母分子共にゼロなので計算不能ってやつね。
480デフォルトの名無しさん
2018/05/17(木) 14:42:41.57ID:5Q9GbdJl
チーム開発に良さそうな気がするけどメンバーのレベルにかなり依存しそう
481デフォルトの名無しさん
2018/05/17(木) 15:12:36.48ID:xSjwlbqQ
自分がGCなしの言語使ってた時の経験だと、ヌルポより、freeした後にアクセスするバグの方が多かったから、オーナーを一つにするrustはいいと思う。
まあ、objective-cのARCでいいじゃんとも思うけど。
482デフォルトの名無しさん
2018/05/17(木) 15:31:36.59ID:eZl7hMvh
そこでoptionalですよ
こいよ継承クラス、ポリモーフィズムなんて捨ててかかって来い!

実際、null非許容のポインタが欲しい
483デフォルトの名無しさん
2018/05/17(木) 15:59:25.11
誰がヌルポなんか 、ヌルポなんか怖かねぇ!
484デフォルトの名無しさん
2018/05/17(木) 16:39:48.45ID:l6lckqvi
C#だとぬるり
485デフォルトの名無しさん
2018/05/17(木) 19:10:55.29ID:eQ6djlVW
C#の発想元はJavaよってC#もぬるぽ(意味不)
486デフォルトの名無しさん
2018/05/17(木) 23:47:12.62ID:STJHYINb
1.27.0-nightly (2f2a11dfc 2018-05-16)がregressionしとる。
issueある。待つヨロシ。

>>427,473
the rust referenceのことじゃね?the bookとは別にあるだろ。
全然追いついてないよアレ。そもそもまだ仕様書がない言語だし。
" best-effort document"って書いてあるでしょ
487デフォルトの名無しさん
2018/05/18(金) 23:04:38.08ID:e1n+oPRU
httpサーバでありかつクライアントであるみたいなプログラム書く場合、現状hyper一択なのかね?
acitx-webとか誰か使ってない?
488デフォルトの名無しさん
2018/05/19(土) 02:24:33.88ID:1CYkmYAx
最初rocketで書いてたけどactix-webで書き直してる
今だとactix-webが一番良い感じだと思う
必要に応じて同期、非同期、アクターモデルと使い分けられるし
489デフォルトの名無しさん
2018/05/19(土) 22:00:56.80ID:o9r1YzQK
>>488
良い感じか。使ってみるか。ありがとう
490デフォルトの名無しさん
2018/05/23(水) 01:20:45.09ID:RRIpR+v2
https://github.com/rust-lang/rfcs/pull/2444
有志「クソ機能入ったのいらねえから消そうぜ」
大勢「いいな!賛成」
独裁開発チーム「もう入ったから消せませーーーーんwwwwww(クローズ&ロック)」

systemdかよって
491デフォルトの名無しさん
2018/05/23(水) 03:14:02.94ID:V0Z2NuNB
>>490
もう入ったから消せませんってのは横暴なようにも見えるがしようがないとも思う
一度入れてしまった機能をまた使えなくするとか、それこそ混乱するし…
そもそも何故impl trait を引数の位置にも書けるようにしたのかは確かに甚だ疑問ではあるけど…
引数の位置でジェネリクスとトレイト境界じゃなくてimpl trait じゃないとダメなケースとかある?
無いなら、warning出してジェネリクスとトレイト境界に書き直すように促すのが妥当じゃないかな?
492デフォルトの名無しさん
2018/05/23(水) 07:29:53.45ID:chu47WW7
例があるけどすっきり書きたいみたい
https://github.com/phaazon/rfcs/blob/undo-universal-impl-trait/text/1951-expand-impl-trait.md
493デフォルトの名無しさん
2018/05/23(水) 10:44:20.66ID:KWn7zjxF
こういうところでマウンティングとらないといけない辺り
言語(笑)開発チームとやらも内情はどうなってることやら
494デフォルトの名無しさん
2018/05/23(水) 11:19:22.58ID:2AZG2/zg
たしかにどっちで書くべきかよくわからんくなった
495デフォルトの名無しさん
2018/05/23(水) 12:46:35.30ID:wx8WkS/n
<T: Trait> foo: T

foo: &Trait
との比較で特殊なケースを除き前者の方が効率良いが
syntax上後者の方が簡単なので
初心者が誤って後者を使ってしまうケースがあった
これを防ぐためにimpl Trait および &dyn Traitを導入し
&Traitをdeprecateすることになった
496デフォルトの名無しさん
2018/05/23(水) 19:22:54.70ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

D49IO
497デフォルトの名無しさん
2018/05/23(水) 20:12:10.79ID:OqqpDSMd
もう入ったから消せません
は正論

何故クソ機能の進入を許してしまったのか、どうすれば食い止められたのかについて追求すべき
498デフォルトの名無しさん
2018/05/23(水) 21:15:28.51ID:cEWT5Ura
ジェネリクスの型変数って引数と戻り値の型を揃えるとかそういう使い方をすべきであって
Traitをimplした型を受け取るという意味ではimpl Traitを使うべきだと思う
ただimpl Traitを導入するなら1.0の時点で導入してて欲しかった
499デフォルトの名無しさん
2018/05/23(水) 23:34:44.01ID:J44hs+nP
こういうところでマウンティングとらないといけない辺り
言語(笑)開発チームとやらも内情はどうなってることやら
500デフォルトの名無しさん
2018/05/24(木) 00:25:13.01ID:XbYocBeq
javaのジェネリックスが理解できてないやつが多いだけ。
501デフォルトの名無しさん
2018/05/25(金) 02:08:00.91ID:MJUyxiHQ
Rust始まる前に終わったか
502デフォルトの名無しさん
2018/05/25(金) 10:28:02.89ID:fl2+4CP3
始まる要素が欠片でもあっただろうか
503デフォルトの名無しさん
2018/05/25(金) 10:31:47.59ID:fl2+4CP3
>>495
それはdyn Traitの実装理由であっても、
引数位置のimpl Traitを実装した理由の説明になってない
504デフォルトの名無しさん
2018/05/25(金) 12:05:08.76ID:2Lpcv/H6
fn foo(a: &dyn Trait)

fn foo<T: Trait>(a: T)
では前者の方がlightweightでは
505デフォルトの名無しさん
2018/05/29(火) 19:15:02.85ID:MDdgGfn5
target/debug 以下に生成されるdepsとかbuildって何なの?
goとかにはないよね?
gtk-rsだと500MB消費しちゃうんだけど他のプロジェクトで使い回しとか出来ないの?
506デフォルトの名無しさん
2018/05/29(火) 23:04:02.93ID:R7SeORIn
>>505 環境変数CARGO_TARGET_DIRを指定してやれば再利用してくれるよ
ただ、vscodeのrustプラグインの何かがこの環境変数を考慮してないんで挙動がおかしくなったことがあるんで注意
507デフォルトの名無しさん
2018/05/29(火) 23:26:47.02ID:MDdgGfn5
>>506
おお流石に出来たんですね

プラグインがおかしくなるのはrls側の問題ですかね🤔
508デフォルトの名無しさん
2018/05/29(火) 23:29:14.13ID:TMN/Dqsk
Rustと言えばcookpad。
509デフォルトの名無しさん
2018/05/30(水) 14:08:55.25ID:EgEwhYIf
>>501
最近Rustの話聞かなくなったな
510デフォルトの名無しさん
2018/05/30(水) 18:12:45.66ID:pSj5bsTP
HNはリリースの度に話題になってるけど
511デフォルトの名無しさん
2018/05/31(木) 06:31:41.15ID:Ao0QiwhU
日本の企業くらいだよ。
rustで書いてまっせっていうバカなアピールするのは。
512デフォルトの名無しさん
2018/05/31(木) 06:42:55.06ID:RS4tQXGE
まあCloudflareも日本にリージョンあるしな
513デフォルトの名無しさん
2018/05/31(木) 10:37:31.25ID:QFV8wAla
>>511
泥箱って日本企業だっけ
514デフォルトの名無しさん
2018/05/31(木) 15:17:41.00ID:Rs+XOVpI
日本の企業って凄いんだなー
515デフォルトの名無しさん
2018/05/31(木) 20:32:40.66ID:ITatAB0P
wtftwっていうタイル型WM、設定ファイルまでrustで書くのどうなんだろ
設定ファイルはluaあたりが無難?
516デフォルトの名無しさん
2018/05/31(木) 22:08:10.33ID:Ao0QiwhU
>>513
いやもうなかったことにしたがってるじゃんw
それなのに変なのに付きまとわれてるっていう。
517デフォルトの名無しさん
2018/05/31(木) 22:30:50.22ID:Rs+XOVpI
>>516
「なかったことにしたがってる」というソースをプリーズ
518デフォルトの名無しさん
2018/05/31(木) 22:43:00.94ID:RS4tQXGE
Dropboxのbrotliデコンパイラが昨日更新されてたから
24時間以内のホットな情報だ
519デフォルトの名無しさん
2018/05/31(木) 22:43:34.41
Rustが失脚すると得をする組織があるの?
どうしてそこまで情熱的にRustを貶すの?
520デフォルトの名無しさん
2018/05/31(木) 22:46:14.56ID:Qkx1CtmH
>>515 ざっとコンフィグファイル見たらXMonadのコンフィグよりは理解しやすいように思った
xmonad.hsはもっと宣言的に書けて、モナドとか上手く作って見栄えは良くできるんだけど、
馴染みのない演算子(<+>とか)使いまくるんで、よっぽどHaskellに慣れ親しんだ人でないと全容が理解できない

設定ファイルのフォーマットを開発言語と同じにするのはdwmから続くタイル型WMの流儀だし、
思ったより読めていいと思うよ。
521デフォルトの名無しさん
2018/06/01(金) 00:57:19.91ID:Lcv3mjW7
>>519
前段 モジラとその小判鮫以外の全組織が喜ぶ
後段 技術的にカスなものを貶すのは技術者の義務だろ
522デフォルトの名無しさん
2018/06/01(金) 01:23:36.92ID:n6iooPs9
>>521
>技術的にカスなものを貶すのは技術者の義務だろ
じゃあPHPではなく敢えてRustをdisる理由は?
あちらの方が広く使われてるからより害悪だと思うが
523デフォルトの名無しさん
2018/06/01(金) 04:40:22.00ID:WbqigEkQ
>>520
ほうほう
524デフォルトの名無しさん
2018/06/01(金) 06:21:30.96ID:/a7YB1o/
>>522
あれを使ってるやつも害悪性は理解してるからな。
こういう技術的にインテリな要素のある言語って信者がとにかく頑なで
実際のプログラムの現場で非常に問題になることが多い。
525デフォルトの名無しさん
2018/06/01(金) 07:12:12.64ID:V5eoRgyy
ほーん具体的にどんな問題がおきたの?
526デフォルトの名無しさん
2018/06/01(金) 07:23:19.18ID:M/qnTWL0
んー例えば
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
527デフォルトの名無しさん
2018/06/01(金) 08:47:59.46ID:n6iooPs9
>>525
んー例えば
コンパイルが通せなくて自尊心が傷ついて自ら会社をやめちゃう問題とか

この話どこまで事実か知らないけど仮に本当だったとしても
これって言語の問題というよりチームのプログラマの腕を過大評価
もしくは計算に入れてなかったというマネジメントの問題だよね
528デフォルトの名無しさん
2018/06/01(金) 09:23:44.51ID:vv7FkXWB
んー例えば
プラズマクラスター付き家電が話に出てきたら今まで黙ってたのに凄い勢いでエセ科学だと解説し出すよね
529デフォルトの名無しさん
2018/06/01(金) 11:58:37.06ID:HQSTzzds
いや、この粘着をクビにするためにRust導入したんでしょ
性格異常だもん
530デフォルトの名無しさん
2018/06/01(金) 17:08:52.31ID:j7xDfBQ9
老害をふるい落とすために新しい言語を取り入れてるって話?
531デフォルトの名無しさん
2018/06/01(金) 19:16:22.80ID:q9V9sFRe
このフィボナッチ数列も書けないあほ
何度言い返せなくなっても数日後に甦る粘着性
C++で実行時にエラーが出るようなコードを書きまくったのでしょう。性格の悪さと溢れる自尊心から誰の耳も貸さなかったのでしょう。
プログラマーとして生きるよりかは、匿名掲示板で巨悪組織Mozzilaと闘うBBS戦士の方が社会的に良さそう
532デフォルトの名無しさん
2018/06/01(金) 19:29:07.67ID:M/qnTWL0
たとえばドワンゴとかDropboxとか
Rustを採用した企業自体を叩く行為をよくしているよな
あれ見るとちょっと辛くなる
533デフォルトの名無しさん
2018/06/01(金) 20:33:15.28ID:hus0bbCf
>>526
具体的には?
534デフォルトの名無しさん
2018/06/01(金) 22:00:45.35ID:/a7YB1o/
例えばここみたいに安全でもなんでもないドヤしたいだけのクソなrustコードが量産されるとか。
http://tanakh.jp/posts/2016-12-20-rust-pezy-sc.html
535デフォルトの名無しさん
2018/06/01(金) 22:44:23.66ID:hus0bbCf
だから具体的はどこが問題なの?
536デフォルトの名無しさん
2018/06/01(金) 22:47:27.38ID:aoTZOmsj
槍玉にあげる例が1個しかないのがダサ過ぎるわ。しかもその例も対象が特殊だし

>>534は「それRustでやる意味がある?」という疑問に全く応えられないのが問題
LLVM IR-> PEZY-SCというコンパイラがあるんだったら、LLVMがバックエンドの他言語でもいいよねって話
それができないなら、LLVM->PEZY-SCは未完成か現実に即してないんじゃねえのって話
537デフォルトの名無しさん
2018/06/01(金) 22:57:48.57ID:hus0bbCf
rustでやってみたって記事にrustでやる意味あるの?って疑問が出てくるのが不思議なんだけど
rustでも出来た、以外に意味はないでしょう
538デフォルトの名無しさん
2018/06/01(金) 23:37:58.33ID:RhYZ0Afc
新しいこと覚えられないから焦ってるんじゃね
539デフォルトの名無しさん
2018/06/02(土) 00:12:03.87ID:LoS19xRX
>>534
安全じゃないコード も 書けるってことに価値があるんだろ?
C/C++以外の他言語では書くことさえできない。でもC/C++は安全性を売りにはしていない
Rustは安全性を売りにしつつ、必要に応じて安全性を捨てる選択もできるということに価値がある
で、たまたまその記事が安全性を捨てることが必要な数少ない例の1つだったってだけ
540デフォルトの名無しさん
2018/06/02(土) 08:09:01.38ID:yQHVvQ0k
安全でもなんでもないって
unsafeあるやんけ!危険危険!
前後の文脈一切分からんけどとにかく危なそうなこと書いてあるやんけ!
つって叩いてるんだろうなw

>>535
その手の問いにそいつが素直に答えたこと無いからあきらめよう
541デフォルトの名無しさん
2018/06/02(土) 09:00:03.22ID:uxIlP8w7
たまたまねw
どんだけコード例出しても言い出しそうだなw
そもそもコード例が少ない訳で、推進してる奴のコードがそんなもんなら
十分否定的な要素だけどね。
542デフォルトの名無しさん
2018/06/02(土) 09:25:00.11ID:yb2DUuBi
grep出来ねえのか^^;
543デフォルトの名無しさん
2018/06/02(土) 09:27:20.96ID:1kkEW1PU
ちょっとrustの記事書いただけで代表的な推進派扱いかよ
544デフォルトの名無しさん
2018/06/02(土) 09:29:46.62ID:IrGCDZgn
>>541
お前さんの理屈だと、Rustじゃこんなに危険になる!って事だろ?
じゃあ、Rustではそういう危険な書き方しか出来ない!って示さなきゃな。
俺は中立だが、あんまり非論理的なdisりはアンチ=低能と思わせたがってるピエロにしか見えんよ。
545デフォルトの名無しさん
2018/06/02(土) 09:41:57.37ID:yb2DUuBi
既に20万行はコードあるからレビューがてら指摘したら喜ばれるよ
546デフォルトの名無しさん
2018/06/02(土) 11:52:56.13ID:SXqC6st7
>>541
ほんとだどこが問題で悪いのか全然書かない
具体的に言及しだすとフィボナッチ数列とか機械語レベルとか、残念なことになるのが自分でもわかってたのか

まあ本人が書いた通り「ドヤしたいだけ」とか…なんかな?前もマウンティング取られたとか訴えてたし…
547デフォルトの名無しさん
2018/06/03(日) 21:39:05.60ID:xPSrrQIy
またいつもの、ボロクソにされたらしばらく潜伏してから復活するパターンかな
たまには芸風変えたら
548デフォルトの名無しさん
2018/06/04(月) 06:53:30.60ID:OFCCUtyY
Rustの不満は言語仕様やrustcよりcargoやその辺の連携(情報の少なさも含む)にある
549デフォルトの名無しさん
2018/06/04(月) 07:51:33.98ID:+kVYhEiS
既成のクレートを探すのはcrates.ioになると思うけどライセンスってどうやって調べるんだろ
同様にクレート間の依存関係も判りにくい
どちらも一式を落としてきて中身を確認しないと判らないような・・・

Cargoで自動ダウンロードして・・・みたいな使い方をしていると意図せずGPL/LGPLになっていた
みたいなライセンス事故が起きそう
550デフォルトの名無しさん
2018/06/04(月) 09:21:50.73ID:wd+rp+GF
>>549
$ cargo install cargo-lichking
$ cargo lichking check

一先ずlichkingでチェックできるよ
551デフォルトの名無しさん
2018/06/04(月) 09:35:16.99ID:4FFAt/Kh
LGPLのstatic linkとかやめて欲しいよね
552デフォルトの名無しさん
2018/06/04(月) 22:37:59.16ID:OFCCUtyY
>>550
えぇー・・・わざわざインストールしないと出来ないのかよ。とりあえずやってみるか
依存関係はどうすりゃいいんだ?no_stdでも使える奴だけ探したいとか
553デフォルトの名無しさん
2018/06/05(火) 01:20:50.84ID:4vI8haY4
>>552
ライセンスをついては、crate名が既知なら、

https://crates.io/api/v1/(クレート名)

でjson取れるので、そこから再帰的に依存辿れば収集はできそう
554デフォルトの名無しさん
2018/06/05(火) 01:35:07.04ID:4vI8haY4
>>552
no_stdかどうかについては、Cargo.tomlのcategoryパートに"no-std"があるかどうかぐらいしか確認するすべなさそう(2017-2-10に追加されたっぽい)。

皆が皆付けてるとは思えないので、参考程度にしかならないだろうけど。
555デフォルトの名無しさん
2018/06/06(水) 04:08:38.62ID:SHaHb3Ap
ちょうどいい機会だから、カーゴのギフハブべったり依存をやめて抽象化してほしいわん
556デフォルトの名無しさん
2018/06/06(水) 07:27:41.91ID:j1CMVtJk
は?
557デフォルトの名無しさん
2018/06/06(水) 08:37:47.80ID:hN7IXoGK
crates.ioべったりは分かるけどGitHub依存って何
558デフォルトの名無しさん
2018/06/06(水) 09:53:27.50ID:x7s61f1u
goと勘違いしてるのでは
559デフォルトの名無しさん
2018/06/09(土) 09:42:43.51ID:W19N5ngq
rustダメじゃん
firefoxは言語オタに支配されたのか?

【IT】高速化を進めてアドオンを排除したFirefox、ついにシェアが10%切る★2
http://2chb.net/r/newsplus/1528388348/
560デフォルトの名無しさん
2018/06/09(土) 10:00:10.77ID:4+qUC/SZ
FirefoxのシェアでRust叩きって前スレでもやったじゃん
http://2chb.net/r/tech/1507970294/100-
561デフォルトの名無しさん
2018/06/09(土) 12:47:19.10ID:Cz/ni8by

前やったから何?
562デフォルトの名無しさん
2018/06/09(土) 13:15:23.42ID:qABRMkwT
なんで筋の通らない批判を平然とするのか不思議
563デフォルトの名無しさん
2018/06/09(土) 15:26:07.97ID:4+qUC/SZ
>>561
ええ…?FFアドオン排除でRustディスは気にならないのか
以前の試みはアドオンとRustを絡めてみた感じだったな
↓のレスをいつものごとく無視し数日潜んでRust叩きを試みていたけど、スレを跨いで同じ材料出すなよ


109 デフォルトの名無しさん sage 2017/11/15(水) 14:21:13.24 ID:FBksKtwj
>>108
失敗してるやん
Rustなんかで書き直したせいでアドオン全滅してる

114 デフォルトの名無しさん 2017/11/15(水) 14:36:17.78 ID:bBOLEH2G
>>109
それは設計の段階で従来のアドオンとの互換性の一部を捨てるように仕様変更したからだよ。
firefoxのアドオンは自由度が高すぎるが故に、セキュリティに問題を抱えやすかったし、
アドオン同士が衝突して落ちるとかも結構あったから、そこら辺をChromeと同レベルくらいに制限して、
セキュリティと安定性を取る方向に方針転換した。
仕様が変わってるんだから、Rustで書こうが他の言語で書こうがどっちにしろ従来のアドオンの一部は動かないよ。
564デフォルトの名無しさん
2018/06/10(日) 00:29:32.38ID:+hx+JhDk
今回は1週間も我慢できなかったのか
ほかに行く場所ないの
565デフォルトの名無しさん
2018/06/10(日) 01:42:55.67ID:x48+YOhO
>>555の話だけど、
>>555はhg使えなかった時代で止まってんじゃないの?
566デフォルトの名無しさん
2018/06/10(日) 09:09:46.77ID:gHOtKfe5
>>565
gitとgithubはちがうよ?
567デフォルトの名無しさん
2018/06/10(日) 09:10:23.63ID:gHOtKfe5
キチガイ帰ってきてよかった
568デフォルトの名無しさん
2018/06/10(日) 10:06:20.84ID:flig3pd5
相変わらず宗教じみてんな
569デフォルトの名無しさん
2018/06/16(土) 11:05:45.57ID:dxp9ohIz
何でio::Errorにファイル名入ってないんだろう? 不便だなーと思ってたけど
検索してみたら、前は入ってたのに1.0リリース前に削除されたんだとさ

https://internals.rust-lang.org/t/add-filename-information-to-io-error/
570デフォルトの名無しさん
2018/06/16(土) 13:06:12.19ID:Om4I19uv
>>569
非効率になるのを嫌ったってことみたいですね
stdでもつには重すぎるってのは理解はできるけど 確かに不便なんだよなー

自分は結局
ioの関数呼ぶ前にinfo!でログ出すとか
戻ってきたio::Errorをmap_errでPathBuf埋め込んだ自前のErrorに変換するとかしてます
571デフォルトの名無しさん
2018/06/16(土) 18:58:29.98ID:dxp9ohIz
>>570
ここで紹介されてる、failureを拡張して let file = File::open(path).with_path(path)?; と書けるようにするのが
カッコいいなと思った
https://github.com/rust-lang-nursery/failure/issues/189

failureは1.0に向けてまだまだ変えていくみたいだし、これ書いた焦げ寿司氏も参加するみたいだから
期待してるわ
throw!マクロが標準化したら、?の時みたいにrustプログラムの見た目変わりそう
572デフォルトの名無しさん
2018/06/16(土) 20:35:40.86ID:unm3Vek/
2回もpath書くの全然かっこよくないから、少し重くてもなんでもいいから便利なライブラリがあれば使うわ
573デフォルトの名無しさん
2018/06/16(土) 23:56:34.69ID:f9DGXpDH
トレイトオブジェクトってなんでトレイトオブジェクトって呼ぶん?
ようはヒープに動的に作られたストラクトだら?
574デフォルトの名無しさん
2018/06/17(日) 01:17:39.67ID:TG/aPZPS
何らかのTraitを実装したオブジェクトだから、じゃ駄目なの?
変に勘ぐって誤解してるよ。スタックにある構造体でもトレイトオブジェクトになる
575デフォルトの名無しさん
2018/06/17(日) 07:51:39.85ID:p2Sm4Lro
うーんここにはそういうニュアンスでは書いてない気がするんだけどなあ
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/trait-objects.html
576デフォルトの名無しさん
2018/06/17(日) 11:48:23.47ID:an9lNlus
traitってなんだよ
577デフォルトの名無しさん
2018/06/17(日) 12:00:53.08ID:erltHdM+
>>576
特性
578デフォルトの名無しさん
2018/06/17(日) 12:03:03.50ID:an9lNlus
わかんねえよw
579デフォルトの名無しさん
2018/06/17(日) 14:20:21.15ID:rd16QG+W
traitは写像の集合で本来的には定義域の集合でないものなので、それとして扱う場合を特別にトレイトオブジェクトって呼んでるんじゃないの?
580デフォルトの名無しさん
2018/06/17(日) 14:55:33.49ID:TG/aPZPS
>>575
ヒープにある構造体である、とはどこにも書いてないよね

複数の異なる型を同じ関数や構造体で持っておきたいけど、
型が違うからコンパイル時にサイズが決まらないんで困ったねって状況を解決するのがトレイトオブジェクト
そういう事態じゃなければfn foo<T: TraitFoo>(obj: T)とかやって型毎に関数をコンパイラに作ってもらうのが普通
581デフォルトの名無しさん
2018/06/17(日) 15:32:03.62ID:hewfXZ0r
マス科の淡水魚じゃなかったけ
582デフォルトの名無しさん
2018/06/17(日) 15:36:27.65ID:Wo64nPZg
それはトラウト
トラウトサーモン。
583デフォルトの名無しさん
2018/06/17(日) 20:19:57.60ID:p2Sm4Lro
なんらかのトレイトじゃなくて特定のトレイトを実装したなんらかの型ってことかな
584デフォルトの名無しさん
2018/06/17(日) 20:38:08.98ID:JVUiE6fQ
D言語の再来と言われるRustには注目しています。
585デフォルトの名無しさん
2018/06/18(月) 11:09:28.26ID:LH5G8a9n
さすがに「C#とか糞wwこれが俺の考えた最強言語ww」→「結局C#が全部正しかったですサーセンww」で終わったただの中二言語と一緒にするのは失礼
586デフォルトの名無しさん
2018/06/18(月) 15:38:58.79ID:/sFO+jYl
そうだな。D言語に失礼だ
587デフォルトの名無しさん
2018/06/18(月) 17:49:36.48ID:fn6n18W4
C#に、な
588デフォルトの名無しさん
2018/06/18(月) 18:41:33.59ID:MmynirXE
まるでD言語が死に絶えたみたいな口振り
589デフォルトの名無しさん
2018/06/18(月) 18:44:27.51ID:eWM+pHRs
え?とっくに死に絶えたでしょ
590デフォルトの名無しさん
2018/06/19(火) 00:05:30.49ID:wsgBP7Sf
>>571
1.0待てなくてもう現行のfailureにどっぷり浸かっとる。
failureはいいぞ!
591デフォルトの名無しさん
2018/06/19(火) 13:49:32.69ID:77HD0esi
D言語は最近顔本コミットを受けて活発化してる

Rustは採用企業が全く増えなくなって資金も枯渇
メインコミッタもリンゴのSwiftやらにヘッドハントされて
もう将来ないでしょ
592デフォルトの名無しさん
2018/06/19(火) 13:50:33.43ID:77HD0esi
もちろん言語のエコシステムとしての将来がないってだけで、
ライフタイムとかの実装系の先駆としての意義はあったとおもうが
593デフォルトの名無しさん
2018/06/19(火) 15:45:39.61ID:Es9NuDl6
終わってみればdartの舞の海だったな。
594デフォルトの名無しさん
2018/06/19(火) 17:08:02.40ID:menX4d1R
なんで急に元力士の名前が出てきたんだ?
二の舞って言いたかったのか?
595デフォルトの名無しさん
2018/06/19(火) 17:13:53.63ID:TNMX9OjF
>>590
なんかfailureのissues見ると、現状のstd::errorの設計は失敗作扱いみたいだな
それって共通認識なんかな?
596デフォルトの名無しさん
2018/06/19(火) 17:47:33.05ID:cDjhSbaW
Haskellかじってて、Rustに興味出てきたんだけど、なに、廃れつつあるの?
597デフォルトの名無しさん
2018/06/19(火) 18:00:26.05ID:LBhs/jk2
廃れるもクソも、Rustが世間の注目を浴びたことなど未だかつて無い
598デフォルトの名無しさん
2018/06/19(火) 18:16:13.49ID:menX4d1R
大丈夫、大丈夫。
ユーザーが年々すごい勢いで減っているDに比べりゃ
規模は小さいもののRustは年々少しずつ増えてるわけだから
今後普及するかどうかはともかく少なくとも廃れちゃいないし、
学習コストが高いから敬遠されてるだけで注目もされてる
それにHaskellと同じで勉強しといて損はない言語だと思うし
599デフォルトの名無しさん
2018/06/19(火) 19:21:40.76ID:30ZWMBay
そもそも普及を目指してるような気配もないよな
バッテリ同梱などと言い出しもしないばかりか
randすらクレイトになってるから
rustcだけで楽しんでると涙目(´・ω・`)になる
600デフォルトの名無しさん
2018/06/19(火) 19:22:11.75ID:b5m1uThb
Dのユーザが減ってRustのユーザが増えてる世界線はどこにありますか?
601デフォルトの名無しさん
2018/06/19(火) 19:50:06.21ID:R39QGoSG
別に趣味でやってりゃいいんでないの。
ライフタイムとか所有権の感覚は他言語でも役にはたつでしょ。
602デフォルトの名無しさん
2018/06/19(火) 22:33:45.56ID:jJOU+tvI
wasm やるなら stdweb と wasm-bindgen のどちらを使ったらいいですかね?
もしくは他の選択肢の方がいいとかありますか?
603デフォルトの名無しさん
2018/06/19(火) 23:34:50.37ID:X5Ll7hqK
>>595
std::error+error_chain/log crateの問題点を
解決するためにfailure/slog crateが
作られたからだいたいそんな感じだと思う。
failureの方は今nurseryだし。

failureのエラーとstd::errorのエラーを相互変換できるから
移行や依存ライブラリがstd::error使ってる場合に対応簡単だよ。
まあ、1.0待ったほうがいいけど。
604デフォルトの名無しさん
2018/06/19(火) 23:47:20.77ID:X5Ll7hqK
>>602
wasm-bindgenはhost bindings proposalの実装でstdwebはweb apiのrustバインディング。
host bindings proposalはWebAssembly用の(ホストとの)ffiみたいなもん。
605デフォルトの名無しさん
2018/06/20(水) 00:10:51.10ID:pTH4tzak
>>602
stdwebベースのyewとか面白いよ
Reactっぽいことが出来る
606デフォルトの名無しさん
2018/06/20(水) 07:50:19.18ID:wh0fPVE/
>>604
>>605
レスどうもです
host binding(wasm-bindgen)が後発で
cargo-webがあるstdwebの方が開発サイクルが楽そうという感じがしてます
yewも見てみます
607デフォルトの名無しさん
2018/06/20(水) 08:12:54.01ID:wc145BD7
>>603
stdの下にあるけど非推奨、みたいなのが今後だんだん増えてくるのかな
608デフォルトの名無しさん
2018/06/20(水) 08:14:53.51ID:mWzW79Bi
はよRust4.0くらいにならんかな
609デフォルトの名無しさん
2018/06/20(水) 10:36:39.96ID:YLzmhKZ9
>>607
使ってはいけない標準ライブラリとかC言語のgetsかよwwwww
21世紀の言語とは思えねえなwwwwwおもちゃもいいところwwwwwww
610デフォルトの名無しさん
2018/06/20(水) 10:37:49.71ID:zK9FZNDh
きたきたw
611デフォルトの名無しさん
2018/06/20(水) 13:21:29.03ID:aMAqNpY0
テンション高杉wwww
612デフォルトの名無しさん
2018/06/20(水) 17:10:00.84ID:XqMiT4dO
愛され言語ナンバーワンに2年連続で輝いたのに人気ない扱いは意味不明だ
613デフォルトの名無しさん
2018/06/20(水) 18:22:38.96ID:vXpw0FFs
>>612
純粋に聞くがお前の周りでRustサイコーって言ってるエンジニア何人いる?
614デフォルトの名無しさん
2018/06/20(水) 18:41:59.74ID:CaLRYR6s
標本数1~2のデータよりこれ見ません?
https://insights.stackoverflow.com/survey/2018/#technology-most-loved-dreaded-and-wanted-languages
615デフォルトの名無しさん
2018/06/20(水) 18:44:15.98ID:XqMiT4dO
>>613
2/6人かな
616デフォルトの名無しさん
2018/06/20(水) 18:51:57.98ID:vXpw0FFs
>>614
いくらでも組織的に水増しできる問答や投票になんの意味が?
617デフォルトの名無しさん
2018/06/20(水) 18:52:41.55ID:vXpw0FFs
>>615
その程度の言語が世界一位って統計的におかしいと思わん?
618デフォルトの名無しさん
2018/06/20(水) 18:54:56.56ID:Vsx9tnAR
>>616
dreadedに水増ししたの?w
619デフォルトの名無しさん
2018/06/20(水) 18:55:44.33ID:CaLRYR6s
>>617
お前と匿名の一人で統計語ろうっておかしいと思わん?
620デフォルトの名無しさん
2018/06/20(水) 18:57:44.45ID:CaLRYR6s
あとこいつ好感度と使用者の数をごっちゃにしてるの?凄いよそれは
フィボナッチ数列も書けないだけはあると思うよ
621デフォルトの名無しさん
2018/06/20(水) 20:41:21.29ID:Hd+sK95t
フィボナッチ数列って円周率みたくいまもなお計算され続けてたりするのかな
622デフォルトの名無しさん
2018/06/20(水) 21:15:36.40ID:vXpw0FFs
どう考えてもRustなんかよりJavaのほうが愛好家多いだろ
プロダクトの数考えろよ
623デフォルトの名無しさん
2018/06/20(水) 21:52:02.37ID:x0fgVEGk
GithubではJavaScriptが一番多いからJavaScriptが一番愛された言語だよ(お前の中で)
この記事オカズに1年ぐらい黙れそう?
http://wolfbash.hateblo.jp/entry/2017/07/30/193412
624デフォルトの名無しさん
2018/06/20(水) 22:24:58.84
ハンバーガーはマクドナルドが世界一売上高いんだから、マクドナルドのハンバーガーが世界一美味いに決まってるだろ?
625デフォルトの名無しさん
2018/06/20(水) 22:35:12.33ID:6Ldi6ZQ0
>>617
なんで一つのサンプルで統計的にとらえるんだ?
プログラマー的におかしいと思わん?
626デフォルトの名無しさん
2018/06/20(水) 23:15:44.76ID:kIAOzAlL
そういや何でmainが必要なんだろね
627デフォルトの名無しさん
2018/06/21(木) 07:34:12.21ID:yU20OhIB
Nimへの風評被害記事を貼るのはやめろ
628デフォルトの名無しさん
2018/06/21(木) 09:00:57.14ID:osGR8xHL
初見の人のために何度も貼るけど↓が本スレ

http://2chb.net/r/tech/1514107621/

ここはキチガイと戯れるスレ
629デフォルトの名無しさん
2018/06/21(木) 10:39:54.15ID:n536ipp2
>>623
それ>>8でオレが貼った記事な
このスレでも反論の余地の出なかった良記事。Nimについてはともかく
Rustのクソさについては本当によくまとまってる
630デフォルトの名無しさん
2018/06/21(木) 12:34:03.16ID:c3YkgC6b
真正のアホだった
631デフォルトの名無しさん
2018/06/21(木) 17:49:56.62ID:ay5pVfJh
だからさー。文句あるなら記事に反論してみなよ

取り下げられた記事以外誰も出せないまま人格批判だけとか全く理論的じゃないし
そういう人ばっかだよねRust信者って
632デフォルトの名無しさん
2018/06/21(木) 18:20:34.36ID:tEqpfdQL
ここ本スレじゃなかったのか
お邪魔しました
633デフォルトの名無しさん
2018/06/21(木) 18:35:12.47ID:ZtwQwgWl
>>631
archive. fo/7NUr2
なんかある?
634デフォルトの名無しさん
2018/06/21(木) 18:46:46.63ID:ay5pVfJh
>>633
だから取り下げられた記事は反論にならないって
本人が間違いだって取り下げたんだから
635デフォルトの名無しさん
2018/06/21(木) 19:00:49.88ID:c3YkgC6b
>>634
読んでもねぇのに自分勝手に判断して否定するバカが
「理論的じゃない」とかよく言えたな

その言葉そっくりそのままお返しするよ
636デフォルトの名無しさん
2018/06/21(木) 20:30:12.03ID:Do17eRfw
>>635
自分勝手じゃないよ?
そもそも論を取り下げたのは向こうじゃん
取り下げられた論が議論の俎上に上がるのはおかしいでしょ
637デフォルトの名無しさん
2018/06/21(木) 21:05:10.85ID:6Hcg3ucp
ある人がどのレベルでプログラミングしてるか、という差がある
ある人にとってはプログラミングとは設計作業に他ならず
ある人にとってはプログラミングが指の労働でしかない

書き間違えるから、書き忘れるから、という理由でもって
しょうもないバッドノウハウを拝み続ける者すらいる
塩と砂糖を入れ間違う、塩を入れ忘れる、自称料理人
そーいうレベルのプログラマ
638デフォルトの名無しさん
2018/06/21(木) 21:10:50.36ID:tPTNHe4P
クソ言語はRuで始まるの法則。
ソースはRubywwwww
639デフォルトの名無しさん
2018/06/21(木) 21:12:31.35ID:c3YkgC6b
>>636
何故取り下げたかの理由も書いてあったがそっちのほうは完全に消えたかな…
アーカイブすら残ってなさそうだ…
「他の記事を貶めるような記事は品性が疑われるからやっぱり取り下げる」
みたいな理由だっと思うけど、どうせお前はそれも認めないんだろ…

………ふぅ………もういいよ……
お前の頭ん中ではRustはクソ言語で良いよ……
640デフォルトの名無しさん
2018/06/21(木) 21:16:43.31ID:THBJN+Sm
まあ人気であることは否定できないし好きに言わせとけば
641デフォルトの名無しさん
2018/06/21(木) 21:55:24.51ID:cUkhcSdq
Rubyスレいってこい
642デフォルトの名無しさん
2018/06/21(木) 22:10:18.40ID:IDDH/Zj5
>>636
そういう人だね
お前だけは確実に
643デフォルトの名無しさん
2018/06/22(金) 06:32:29.82ID:dlC04wo2
rustup update stable
644デフォルトの名無しさん
2018/06/22(金) 07:54:28.27ID:eG6Vx+RS
クソ言語に固執し続けるクソ人間
645デフォルトの名無しさん
2018/06/22(金) 08:36:26.70ID:YRNyKvjT
1.27.0がstableになったんね
646デフォルトの名無しさん
2018/06/23(土) 08:31:56.29ID:XcMMhDbo
rustは個人開発向けで仕事に使うものじゃないのね。
647デフォルトの名無しさん
2018/06/23(土) 09:39:24.90ID:tcOUUI9f
ソースは?
648デフォルトの名無しさん
2018/06/23(土) 10:17:10.81ID:YCFgkK7r
Cargo.tomlに対応するrustcの最低バージョン番号を書く方法ってある?
649デフォルトの名無しさん
2018/06/23(土) 10:36:49.30ID:SR6K28vn
ネタスレで質問するやつはキチガイ
650デフォルトの名無しさん
2018/06/23(土) 11:42:32.40ID:FNwUUYYn
スレチ
Rustスレに行け
651デフォルトの名無しさん
2018/06/23(土) 12:03:08.67ID:SR6K28vn
キチガイがまともなふりして質問するふりするんだよなー
652デフォルトの名無しさん
2018/06/23(土) 12:36:47.01ID:VZhdie4n
>>648
https://qiita.com/tatsuya6502/items/8b31e2b162aff78787fe
プロジェクトフォルダにrust-toolchainファイル置いてその中で指定出来るみたい
toolchain指定なんでrustup必須になるのと固定指定しかできないっぽいけど
653デフォルトの名無しさん
2018/06/23(土) 17:56:54.88ID:ADF05MCP
みんな英語どうやって勉強したの
654 ◆QZaw55cn4c
2018/06/23(土) 18:09:48.96ID:OlLfOCSW
>>653
受験勉強で
655デフォルトの名無しさん
2018/06/23(土) 18:09:55.67ID:592i1cd7
>>653
俺は英語なら分かるんだけど、日本語はさっぱり分からん
656デフォルトの名無しさん
2018/06/23(土) 18:11:27.27ID:ADF05MCP
>>654
すげーな
オライリーのやつKindleで読んでるけどまず訳すのが大変だわ
657デフォルトの名無しさん
2018/06/23(土) 18:27:07.96ID:ADF05MCP
>>655
英語圏に生まれたかったと切に思う
658デフォルトの名無しさん
2018/06/23(土) 19:52:59.41ID:1v1LX/MG
訳さず英語で読んだ方が…
情報の早さ・量・正確さが段違いだし原著読むと意外と難しい単語使われてない。
bind(bound)を束縛とかアホかと。
せめて結びつけとかにしろよと。
翻訳のセンス無さすぎ。
もしくはわざと小難しくして地位を守ってるのか…
659デフォルトの名無しさん
2018/06/23(土) 19:59:41.54ID:G+zkBspm
結びつけだとassociateの訳ともとれそう
英語と一対一で対応できる和訳の方があとから英語情報に触れるときのハードルを下げると思う
660 ◆QZaw55cn4c
2018/06/23(土) 20:01:25.05ID:OlLfOCSW
>>658
get / put / take なんかで言い換えしたからといって、わかりやすくなったとは思わない
661デフォルトの名無しさん
2018/06/23(土) 20:13:20.08ID:1v1LX/MG
それにしても~を~に束縛しますとかセンス無さすぎる。
明治時代の翻訳見習ってほしい。
漢籍の素養が必要だが…
662デフォルトの名無しさん
2018/06/23(土) 20:59:38.24ID:hXAC/kvi
逆に聞くが「変数にbindする」って日本語にどう訳したら自然なんだ?「結びつける」は別の意味になるぞ

明治期のアレは翻訳っていうよりは対応する訳語を創出するって感じだから、単純な翻訳じゃないぞ

「縛りつける」みたいな感じになるしかないと思うんだが
束縛は単純に漢語にしただけで大差なかろう
663デフォルトの名無しさん
2018/06/23(土) 21:03:29.72ID:YCFgkK7r
>>652
ありがとう
一応そういうのあるんだ
そのページの下に書いてある、edition 指定出来るようになるのを期待、という感じかな
664デフォルトの名無しさん
2018/06/23(土) 21:53:58.53ID:eYj7ZreJ
> 翻訳のセンス無さすぎ。

お前にはあるかのような口ぶりで

> せめて結びつけとかにしろよと。

↑こんなこと言い放ちつつも

> もしくはわざと小難しくして地位を守ってるのか…

束縛っていうふつうの単語を小難しく感じると白状し
地位を守るだのなんだのという珍妙な価値観まで丸出しにするとは恐れ入る
665デフォルトの名無しさん
2018/06/23(土) 22:00:12.26ID:iDCSFlv+
まあ、英語のbindからして数理論理の変数束縛と同じ単語を別の意味で使いまわしてる
近い分野なんだから専門用語もう少し考えてくれても良かったのに
666デフォルトの名無しさん
2018/06/23(土) 22:31:42.63ID:3sIWKIRG
慣れちゃってるから気づきもしなかったけど代入からして大概だよな。
英語だと単にassignだぞ。
667デフォルトの名無しさん
2018/06/23(土) 22:44:14.17ID:YCFgkK7r
その点、グーグルは気が利いてて、
「錆は、安全性、スピード、並行性に重点を置いたシステムプログラミング言語です。
以前のバージョンのRustが錆びてインストールされている場合、」
だからな
668デフォルトの名無しさん
2018/06/24(日) 00:43:46.88ID:8RP1t8O+
「バインドする」で良いのでは
traitとかcrateとか訳すとよくわからなくなるもの多いし全部カタカナでよい
669デフォルトの名無しさん
2018/06/24(日) 00:53:31.43ID:EUL7CrQi
a に 1 を綴じます。
670デフォルトの名無しさん
2018/06/24(日) 01:02:45.16ID:AYN9x63N
タイプアノテーションのないバリアブルのタイプはライトサイドをエバリューションしたときのタイプになります
671デフォルトの名無しさん
2018/06/24(日) 02:00:22.91ID:cQRh0RXw
是々非々だな。
型アノテーションのない変数の型は右側を評価したときの型になります
束縛するはバインドするでよかった。SMの趣味ないし。
672デフォルトの名無しさん
2018/06/24(日) 07:41:58.64ID:yrJGTcca
束縛と代入ってなにか違うんけ?
673デフォルトの名無しさん
2018/06/24(日) 08:29:18.59ID:4dDfbtJe
誰に確認したわけじゃないが、変数に何か値を設定するのが代入で、値に名前を付けるのが束縛だという認識
fn foo(...) {...} は、ある関数に対しfooという名前をつけるので「関数をfooに束縛する」とは言うかもしれないけど、
「fooに関数を代入している」とは言わない、みたいな
674デフォルトの名無しさん
2018/06/24(日) 09:14:33.52ID:aLprG8s0
緊縛と挿入!
675デフォルトの名無しさん
2018/06/24(日) 09:46:27.06ID:dcl6yRWH
単にイミュータブルかミュータブルかの違いでないの?
676デフォルトの名無しさん
2018/06/24(日) 09:52:28.95ID:yrJGTcca
>>673
伝統的な表現だと宣言に近いニュアンスかな
677デフォルトの名無しさん
2018/06/24(日) 10:29:37.13ID:O0XPf3sp
rustはバインドしていない状態の変数も合法だからややこしい

let hoge;
hoge = 100; // これをコメントアウトするとコンパイルできない
println!("{}", hoge);
678デフォルトの名無しさん
2018/06/24(日) 12:51:16.68ID:1I2gvIDj
初心者なんですが、文字列を作成して返す関数を作るときって、
fn hoge() -> String { "hoge".to_string() }
と書くものですか?
それとも
fn hoge() -> &'static str { "hoge" }
と書くべきでしょうか?
679デフォルトの名無しさん
2018/06/24(日) 13:59:02.13ID:yrJGTcca
その例だと関数にする必要なくない
680デフォルトの名無しさん
2018/06/24(日) 15:24:02.20ID:7t4PbT1U
>>678
テケトーにググっただけ

https://qiita.com/Mizunashi_Mana/items/db88cb0bff002abce1ae
681デフォルトの名無しさん
2018/06/24(日) 18:18:06.50ID:ImbiQntl
Stringもstrも返す可能性があるなら Cow<str> で
それ以外なら使えるときは &str を使うのが良いのでは
682デフォルトの名無しさん
2018/06/24(日) 19:01:12.28ID:n+g5Cjrk
Stringとstrを両方残しちゃうあたり
優柔不断でグダグダな言語に思えてしまう
683デフォルトの名無しさん
2018/06/24(日) 19:14:57.34ID:knj+uGWY
はあ…?
684デフォルトの名無しさん
2018/06/24(日) 19:22:46.99ID:rqN/F7y5
C FFIに関する技術資料ってどこにあるんだろ?
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/ffi.html
にチュートリアルはあるけどexternの記述方法とかがわからない
見よう見まねで書けなくはないけどそのまま行くのは事故の元だし
ついでにlibcが何をしているのかもわからない
685デフォルトの名無しさん
2018/06/24(日) 20:18:07.31ID:gRETAB5B
>>684
CのヘッダからRustのインターフェースを自動生成してくれる
bindgenを追っかけてみればよいかと
https://github.com/rust-lang-nursery/rust-bindgen
686デフォルトの名無しさん
2018/06/24(日) 22:15:14.01ID:W9MJDxOG
>>683
せめて理論的に反論しろよグダグダ言語の信者
687デフォルトの名無しさん
2018/06/24(日) 22:29:21.43ID:ztKvyOBw
>>686
ごめんなさい
論はどこですか?
688デフォルトの名無しさん
2018/06/24(日) 23:26:54.62ID:rqN/F7y5
>>685
えぇ・・・ソース見るしかないのかよ・・・
リファレンスマニュアル見てもちゃんと書いてないんだよな
さらにググってもリファレンスマニュアルが引っかかってこない罠
689デフォルトの名無しさん
2018/06/24(日) 23:57:53.79ID:O0XPf3sp
>>684,685
unsafeまわりの文書に入ってる(ただしdraft)
https://doc.rust-lang.org/nomicon/ffi.html
公式文書はgithubのorganization(rust-lang、rust-lang-nursery)から探している
690デフォルトの名無しさん
2018/06/25(月) 00:22:53.39ID:U0L6J6Ez
C言語ライブラリの関数を3回呼び出すコードと格闘すること数時間。ようやく動いた
まだ不明点は残っている
・#[link(~のkindが何を示しているのか判らない
 C FFIの使用例を見るとよく見るんだが・・・
・C言語配列の渡し方が不明
 元は
 >int p[]={16,9};
 >foo(p);
 とりあえず
 >foo("\x10\x09".as_ptr());
 などと書けばデータ上は整合するから動くけどどう見てもスマートな記述方法ではない
・文字リテラルの仕様が不明
 ↑の表記を得るのに数回試行錯誤した

データの与え方もCStringを使った(=\x00終端する)方法は出てくるけど、そうではない方法は
中々見つからなかった。結局↑の表記に落ち着いたが

>>689
ありがとう。kind値について書いてありますね。静的リンクだとkind = "static"らしいですが
付けても付けなくてもファイルサイズは大差ないようです。何が違うのだろう
691デフォルトの名無しさん
2018/06/25(月) 12:50:29.35ID:vFqeQKwN
Cの配列は第一級の値じゃないからas_ptrが正攻法だと思う
692デフォルトの名無しさん
2018/06/25(月) 20:19:17.73ID:U0L6J6Ez
>>689によればFFIで使用できる物として
・#[repr(C付きのstruct
・#[repr(C付きのenum
・box?
・vec
・str
が挙がっているけどCと互換性があるのはこれらのみって事なのだろうか
vecを試してみたら動いたけどextern時に安全じゃないから#[repr(C)]付きのstruct使えなどと言いだした

>>691
マジかよ!確かに文字列は汎用性が高いけど可読性が良くない・・・必要に応じて抽象化しろという事か
693デフォルトの名無しさん
2018/06/25(月) 20:24:02.61ID:J2kal8dh
Rustの側では変更しないけどCの側で変更するような変数ってmutにしないと駄目よね?
694デフォルトの名無しさん
2018/06/25(月) 22:00:13.27ID:U0L6J6Ez
あっ、ヤベェ・・・いきなり重大なバグ出してら
× foo("\x10\x09".as_ptr());
○ foo("\x10\x00\x00\x00\x09\x00\x00\x00".as_ptr());
こうだよな
標準で[16: i32, 9: i32]を"\x10\x00\x00\x00\x09\x00\x00\x00"に変換してくれるようなのが欲しい
695デフォルトの名無しさん
2018/06/25(月) 22:05:44.09ID:KKbqvHaH
うわこれは読みたくないw
難しいもんだな
696デフォルトの名無しさん
2018/06/25(月) 22:59:19.25ID:U0L6J6Ez
ちなみに間違っている状態でも呼んだC関数は正常に終了します。まさにunsafeです。怖いです
何か対策を考えないと大事故を起こしそう
要素数2しかないのにstructを書くのはコード効率の点からも可読性の面からもあまり良いとは思えないし・・・
いろいろ試してみたら
>let p: [i32; 2] = [16, 9];
>foo(&p);
ならいけるようだ。コンパイラは何も言わないけどこの表記が適切かどうかは不明

Rubyだと
foo([16,9].pack("i2")) #配列をint2個分の文字列(=8byteのバイナリ列)に変換
とか書けるんだよなぁ。コストは安くないけど>>694みたいなポカミスは起こらない
697デフォルトの名無しさん
2018/06/25(月) 23:46:12.87ID:kYoiRQin
>>696
何がしたいかよく分からんが
何故にC側がintの配列なのにRust側では文字列を使おうとしてるんだ?
C側がintってことはRust側で対応する型はisizeだろ
(Cのintが事前に32bitと分かってる場合はi32でも可
同様に64bitだと分かっている場合は対応する型はi64)

つまり、Cで
int[] x = {16, 9};
なら、Rustで同じデータを表すものは
let x: [isize; 2] = [16, 9]; // let x = [16_isize, 9]; でもおk
って書けば良いはず

Rubyと同じように考えようとするから変なことになる
RustでFFIするならCと対応する型は何かを考えれば良い
698デフォルトの名無しさん
2018/06/26(火) 00:21:30.73ID:kImvQJUH
>>697
いや、isizeはまずいんじゃない?
例えばx86_64だとisize:64bit,int:32bitだし。
libcクレートのc_intならアーキテクチャ毎に適切なサイズになるから
こちらがいいかと。
699デフォルトの名無しさん
2018/06/26(火) 00:26:36.57ID:kImvQJUH
ついでに言うとFFIするときの型はプリミティブ型以外でも
とりあえずlibcクレートを探すといい。
まぁマイナーなアーキテクチャだと間違ってたりすることもあるから
確認は必要だけど。
700デフォルトの名無しさん
2018/06/26(火) 00:50:28.55ID:85MS96V/
とりあえず仕返しにrubyスレ荒らそうぜ
http://2chb.net/r/tech/1523954817/
701デフォルトの名無しさん
2018/06/26(火) 00:50:41.38ID:Hc+GAUt1
>>698
あれ?そうだっけ?
うかっりしてたゴメン

そう言えばCのintはポインタのサイズに合わせるんじゃなくて
アーキテクチャ毎に変わるんだったっけか
702デフォルトの名無しさん
2018/06/26(火) 01:08:16.37ID:Hc+GAUt1
調べたらCのintにRustで対応する型はisizeじゃなくてstd::os::raw::c_intだったわ
libcのc_intとの違いがよく分からん
対応アーキテクチャの数か?
703デフォルトの名無しさん
2018/06/26(火) 02:21:07.36ID:kImvQJUH
>>702
一応libcはno_stdでも動くというメリットがあった気はする。
逆にプリミティブ型限定でも依存ライブラリ増やしたくないならstdなのかな?
704デフォルトの名無しさん
2018/06/26(火) 08:11:12.99ID:xzmHFSgh
>>697
あなたの言うとおりですが、そのような情報はどこをから得られるのか・・・
>>689等のFFIに関する資料に書いてあるようには見えません
std::os::raw::c_intも>>702を見て探してみたら
https://doc.rust-lang.org/std/os/raw/index.html
ここにあるのか

配列等の長さが変わる型のC互換性に関する情報もどこにあるんだろ
アドレスの連続性とメモリの確保が保証されている必要があると思いますが
705デフォルトの名無しさん
2018/06/26(火) 08:35:08.35ID:Hc+GAUt1
>>704
資料が少ないのはまだ普及してない言語では仕方がない
FFIとか皆が頻繁に使う機能じゃないようなものはなおさら
Cの配列とRustの配列は互換があるはずだけど
悪いがその情報をどこから手に入れたかは覚えていないし
信用されても困る(ついさっきも間違えたしね)
場合によっては資料探すよりソースコード読んだほうが早いことも多いし
根気良く調べるしかないとしか言いようがない
あとはFFIみたいなunsafe部分は出来る限り念入りにテストを書くとか
706デフォルトの名無しさん
2018/06/26(火) 09:06:54.14ID:ffYAyO/t
>>704
arrayとsliceの連続性保証はここですかね。
https://doc.rust-lang.org/reference/type-layout.html#array-layout
707デフォルトの名無しさん
2018/06/26(火) 10:23:55.54ID:MUW40HUm
今のnightlyだとclippyビルド出来ないよね?
ビルド出来る最後のバージョンと、それをインストールする方法教えてください
708デフォルトの名無しさん
2018/06/26(火) 12:18:25.05ID:8xBVh24a
RustのABIについてはドキュメント増やすことはできるだろうけど
それ以前の問題としてCのABI知らないとFFIつらいのでは
709デフォルトの名無しさん
2018/06/26(火) 18:47:03.15ID:xzmHFSgh
付き合ってくれてありがとう

まとめるとFFIで使えるのは
・#[repr(C付きのstruct
・#[repr(C付きのunion
・#[repr(C付きのenum ←条件付き
・box?
・vec ←非推奨?
・str
・array
・slice
・std::os::rawの中にある物
このへんで良いのかな
std::os::rawの中とarray、struct、union、strがあれば一通り出来そうか
710デフォルトの名無しさん
2018/06/26(火) 20:49:29.40ID:qO0rk7ac
vecもas_ptr用意されているし非推奨と言うことはないはず
sliceにderefできるし
711デフォルトの名無しさん
2018/06/26(火) 23:28:33.57ID:+xThVrkU
IDが変わっています

vecの件
>extern {fn foo(p: &std::vec::Vec<i32>);}
>foo(&vec![16, 9]);
これだと
>warning: `extern` block uses type `std::vec::Vec<i32>` which is not FFI-safe: this struct has unspecified layout
>・・・
> = help: consider adding a #[repr(C)] or #[repr(transparent)] attribute to this struct
と言われ正常に動作しない。クラッシュはしないが実行結果がおかしい
>extern {fn foo(p: *const i32);}
>foo(vec![16 as i32, 9 as i32].as_ptr());
これなら問題ないようだ。奥が深い

あとC関数から帰ってきたアドレスをu32へ入れていたのをc_voidへ入れるようにしたら所有権で怒られて動かなくなった
同じコードでも型によって所有権の移動のしかたが違うのか
712デフォルトの名無しさん
2018/06/27(水) 00:01:15.59ID:a5PFJKPe
RustのVec自体には確かCとの互換性はないはずだよ
ただし、Vecはsliceにderefが可能でsliceはCの配列と互換がある

vec![16 as i32, 9 as i32].as_ptr()
はVecに対してas_ptr()メソッドを呼んでるように見えるけど
(ドキュメントを確認すれば分かるが)実際にはVecにas_ptr()メソッドなんて定義されていない
as_ptr()はsliceの方に定義されていて、暗黙的にderefされてからas_ptr()が呼ばれてる
つまり上のコードは丁寧に書き直すと↓と同じ意味(のはず)
let vec: Vec<i32> = vec![16, 9];
let slice: &[i32] = vec.deref();
let ptr: *const i32 = slice.as_ptr();
713デフォルトの名無しさん
2018/06/27(水) 00:13:14.65ID:95B8/IDl
あとC関数の引数&戻り値はmove(ポインターか実値)しないとだめじゃない?
&付けて参照渡しにするのはよく分からない、たぶん未定義動作じゃないかなあ
714デフォルトの名無しさん
2018/06/27(水) 01:04:32.64ID:9Rd9nmLi
>>707
clippyは最新のnightlyは**追ってない**けど常に開発中だから
ビルドできるバージョンは常に変わる。
自分の環境のビルドできる最大のnightlyに合わせろしか言えん。
常にclippyを使い続けたいなら環境の方をclippyに合わせないとだめ。

>>709
- cの配列はraw pointer
- 配列以外ならrepr(C)してメモリレイアウト合わせるか
- C側でopaque pointer定義してas_ptr
- 汎用ポインタはrust側は

pub enum Void;
type VoidRef = *mut Void;

- cのvoid*がrust側にほしいならlibcクレート
- VLAや不完全配列はrustnomicon読む

まずC abi覚えろ。

std140レイアウトならクレートあるぞ。
715デフォルトの名無しさん
2018/06/27(水) 02:41:49.66ID:yfKVc+j6
Rustだけ覚えればいい時代はまだ来ない
C/C++の知識皆無では
716デフォルトの名無しさん
2018/06/27(水) 09:44:32.66ID:SAllJH2o
オライリーの訳本が8月に出るのね
717デフォルトの名無しさん
2018/06/27(水) 10:05:32.17ID:YMyBwU5o
本が出る頃には内容が古くなってるやつだろ
718デフォルトの名無しさん
2018/06/27(水) 14:44:22.85ID:3NxQrIF4
>>716
英語で出る分には多目に見たが、日本語で出るんなら出版社の不買運動だな
どこが訳すか知らんけど
719デフォルトの名無しさん
2018/06/27(水) 17:59:19.20ID:06nI5JoX
不買運動何人参加するの?大規模にやろうぜ
720デフォルトの名無しさん
2018/06/27(水) 18:21:05.70ID:nwq6g8g7
英語なら多目に見るwwwwwwww
721デフォルトの名無しさん
2018/06/27(水) 18:35:05.31ID:hr/rqCUy
>>712
ありがとう、そういうオチか。&で正常に動かないのも納得です
暗黙の変換って便利ですけど理解が浅いとハマる元だったりしますよね
不適切な入力を入れると自分が書いたつもりのコードとは無関係っぽいエラーを出して???になったり

>>713
#[link(name = "・・・")]
extern {
 fn func1(x: *const u8) -> u32;
 fn func2(y: u32);
 fn func3(z: &u32);
}
fn main() {
 unsafe {
  let mut a = func1("foo.dat".as_ptr()); //C側でメモリが確保されアドレスが帰ってくる
  func2(a); //アドレスを使って処理
  func3(&a); //確保したメモリを解放
 }
}
これは動きます。u32をstd::os::raw::c_voidにするとfunc2のaで
>use of moved value: `a`
>= note: move occurs because `a` has type `std::os::raw::c_void`, which does not implement the `Copy` trait
そんな事を言われても困る・・・ついでにenumなので格納されているアドレス値の確認も面倒
usizeなら問題ない。ドキュメントが正しいならusizeはポインタのサイズらしいしこっちの方が楽かも

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1518347244/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Rust Part5 ->画像>1枚 」を見た人も見ています:
DANCERUSH STARDAM Part5
Hi-STANDARD part58
DANCERUSH STARDOM Part7
DANCERUSH STARDOM Part14
【SUBARU】WRX STI/S4 (VA) Part90
【SUBARU】WRX STI/S4 (VA) Part95
【SUBARU】WRX STI/S4 (VA) Part82
MATERIAL STRUCTURE 解体匠機 Part.2
【SUBARU】WRX STI/S4 (VA) Part133
【BrownDust】ブラウンダスト part5
【SUBARU】WRX STI/S4 (VA) Part114
【SUBARU】WRX STI/S4 (VA) Part127
Visual Studio Code / VSCode Part5
【BrownDust】ブラウンダスト part59
【候補生・DJ】スリジエ part5 【WEST】
【iPad用】CLIP STUDIO PAINTとか part5
Jane Styleの質問に誰かが答えるスレ Part57
DANCERUSH STARDOM プレイヤースレ Part4
Fate/stay night [Heaven's Feel] Part51
【Real】久保建英応援スレ part55【Castilla】
【WOWOW】リゾーリ&アイルズ Part5【Boston】
【NI】 Native Instruments Massive/MassiveX Part2
【ストステ】 StraStella (ストラステラ) part53【NEXON】
タイトル:【ストステ】 StraStella (ストラステラ) part57【NEXON】
【下方修正】【詐欺運営】THE KING OF FIGHTERS ALLSTAR part59 【無能 清水啓佑P】【KOF】
Crucial・Micron SSD Part50
【FF14】ガルーダ鯖スレ part580【Garuda】
Rust part9
Rust part26
TIPSTAR part54
DESTRAGE part5
RUST その2 part3158
DANCERUSH STARDOM
Acustica audio part5
STAP細胞の懐疑点 PART580
Steam和ゲー総合 Part50
Steam和ゲー総合 Part57
C vs C++ vs Rust Part.2
Farthest Frontier Part5
Fender Telecaster Part53
avast!Anti-Virus Part195
avast!Anti-Virus Part190
【Steam VR】VRChatスレ part55
【PC】Stylishnoob専用スレ part509
【PC】Stylishnoob専用スレ part507
Steamの面白くて安いゲーム教えて Part515
Steamの面白くて安いゲーム教えて Part555
【SUBARU】WRX STI/S4 (VA) Part149
CORE MASTERS コアマスターズ Part55
【SUBARU】WRX STI/S4 (VA) Part162
【SUBARU】WRX STI/S4 (VA) Part152
【SUBARU】WRX STI/S4 (VA) Part164
【Switch/Steam】ハーヴェステラ part5
Steamの面白くて安いゲーム教えて Part560
Steamの面白くて安いゲーム教えて Part572
Steamの面白くて安いゲーム教えて Part548
Steamの面白くて安いゲーム教えて Part516
Steamの面白くて安いゲーム教えて Part557
Steamの面白くて安いゲーム教えて Part597
Steamの面白くて安いゲーム教えて Part571
Steamの面白くて安いゲーム教えて Part596
Steamの面白くて安いゲーム教えて Part543
Hearthstone: Heroes of Warcraft Part503
Jane Styleの質問に誰かが答えるスレ Part50
【PS4】Conan Exiles / Outcasts part59
23:40:14 up 100 days, 39 min, 0 users, load average: 11.63, 13.11, 14.28

in 2.1872961521149 sec @2.1872961521149@0b7 on 072612