[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 07/23 01:28 / Filesize : 234 KB / Number-of Response : 966
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust Part5



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

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

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

前スレ
https://mevius.5ch.net/test/read.cgi/tech/1507970294/

596 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 17:13:53.63 ID:TNMX9OjF.net]
>>591
なんかfailureのissues見ると、現状のstd::errorの設計は失敗作扱いみたいだな
それって共通認識なんかな?

597 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 17:47:33.05 ID:cDjhSbaW.net]
Haskellかじってて、Rustに興味出てきたんだけど、なに、廃れつつあるの?

598 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 18:00:26.05 ID:LBhs/jk2.net]
廃れるもクソも、Rustが世間の注目を浴びたことなど未だかつて無い

599 名前:デフォルトの名無しさん [2018/06/19(火) 18:16:13.49 ID:menX4d1R.net]
大丈夫、大丈夫。
ユーザーが年々すごい勢いで減っているDに比べりゃ
規模は小さいもののRustは年々少しずつ増えてるわけだから
今後普及するかどうかはともかく少なくとも廃れちゃいないし、
学習コストが高いから敬遠されてるだけで注目もされてる
それにHaskellと同じで勉強しといて損はない言語だと思うし

600 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 19:21:40.76 ID:30ZWMBay.net]
そもそも普及を目指してるような気配もないよな
バッテリ同梱などと言い出しもしないばかりか
randすらクレイトになってるから
rustcだけで楽しんでると涙目(´・ω・`)になる

601 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 19:22:11.75 ID:b5m1uThb.net]
Dのユーザが減ってRustのユーザが増えてる世界線はどこにありますか?

602 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 19:50:06.21 ID:R39QGoSG.net]
別に趣味でやってりゃいいんでないの。
ライフタイムとか所有権の感覚は他言語でも役にはたつでしょ。

603 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 22:33:45.56 ID:jJOU+tvI.net]
wasm やるなら stdweb と wasm-bindgen のどちらを使ったらいいですかね?
もしくは他の選択肢の方がいいとかありますか?

604 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 23:34:50.37 ID:X5Ll7hqK.net]
>>596
std::error+error_chain/log crateの問題点を
解決するためにfailure/slog crateが
作られたからだいたいそんな感じだと思う。
failureの方は今nurseryだし。

failureのエラーとstd::errorのエラーを相互変換できるから
移行や依存ライブラリがstd::error使ってる場合に対応簡単だよ。
まあ、1.0待ったほうがいいけど。



605 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 23:47:20.77 ID:X5Ll7hqK.net]
>>603
wasm-bindgenはhost bindings proposalの実装でstdwebはweb apiのrustバインディング。
host bindings proposalはWebAssembly用の(ホストとの)ffiみたいなもん。

606 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 00:10:51.10 ID:pTH4tzak.net]
>>603
stdwebベースのyewとか面白いよ
Reactっぽいことが出来る

607 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 07:50:19.18 ID:wh0fPVE/.net]
>>605
>>606
レスどうもです
host binding(wasm-bindgen)が後発で
cargo-webがあるstdwebの方が開発サイクルが楽そうという感じがしてます
yewも見てみます

608 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 08:12:54.01 ID:wc145BD7.net]
>>604
stdの下にあるけど非推奨、みたいなのが今後だんだん増えてくるのかな

609 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 08:14:53.51 ID:mWzW79Bi.net]
はよRust4.0くらいにならんかな

610 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 10:36:39.96 ID:YLzmhKZ9.net]
>>608
使ってはいけない標準ライブラリとかC言語のgetsかよwwwww
21世紀の言語とは思えねえなwwwwwおもちゃもいいところwwwwwww

611 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 10:37:49.71 ID:zK9FZNDh.net]
きたきたw

612 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 13:21:29.03 ID:aMAqNpY0.net]
テンション高杉wwww

613 名前:デフォルトの名無しさん [2018/06/20(水) 17:10:00.84 ID:XqMiT4dO.net]
愛され言語ナンバーワンに2年連続で輝いたのに人気ない扱いは意味不明だ

614 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:22:38.96 ID:vXpw0FFs.net]
>>613
純粋に聞くがお前の周りでRustサイコーって言ってるエンジニア何人いる?



615 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:41:59.74 ID:CaLRYR6s.net]
標本数1〜2のデータよりこれ見ません?
https://insights.stackoverflow.com/survey/2018/#technology-most-loved-dreaded-and-wanted-languages

616 名前:デフォルトの名無しさん [2018/06/20(水) 18:44:15.98 ID:XqMiT4dO.net]
>>614
2/6人かな

617 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:51:57.98 ID:vXpw0FFs.net]
>>615
いくらでも組織的に水増しできる問答や投票になんの意味が?

618 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:52:41.55 ID:vXpw0FFs.net]
>>616
その程度の言語が世界一位って統計的におかしいと思わん?

619 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:54:56.56 ID:Vsx9tnAR.net]
>>617
dreadedに水増ししたの?w

620 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:55:44.33 ID:CaLRYR6s.net]
>>618
お前と匿名の一人で統計語ろうっておかしいと思わん?

621 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 18:57:44.45 ID:CaLRYR6s.net]
あとこいつ好感度と使用者の数をごっちゃにしてるの?凄いよそれは
フィボナッチ数列も書けないだけはあると思うよ

622 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 20:41:21.29 ID:Hd+sK95t.net]
フィボナッチ数列って円周率みたくいまもなお計算され続けてたりするのかな

623 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 21:15:36.40 ID:vXpw0FFs.net]
どう考えてもRustなんかよりJavaのほうが愛好家多いだろ
プロダクトの数考えろよ

624 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 21:52:02.37 ID:x0fgVEGk.net]
GithubではJavaScriptが一番多いからJavaScriptが一番愛された言語だよ(お前の中で)
この記事オカズに1年ぐらい黙れそう?
wolfbash.hateblo.jp/entry/2017/07/30/193412



625 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 22:24:58.84 .net]
ハンバーガーはマクドナルドが世界一売上高いんだから、マクドナルドのハンバーガーが世界一美味いに決まってるだろ?

626 名前:デフォルトの名無しさん [2018/06/20(水) 22:35:12.33 ID:6Ldi6ZQ0.net]
>>618
なんで一つのサンプルで統計的にとらえるんだ?
プログラマー的におかしいと思わん?

627 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 23:15:44.76 ID:kIAOzAlL.net]
そういや何でmainが必要なんだろね

628 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 07:34:12.21 ID:yU20OhIB.net]
Nimへの風評被害記事を貼るのはやめろ

629 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 09:00:57.14 ID:osGR8xHL.net]
初見の人のために何度も貼るけど↓が本スレ

mevius.5ch.net/test/read.cgi/tech/1514107621/

ここはキチガイと戯れるスレ

630 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 10:39:54.15 ID:n536ipp2.net]
>>624
それ>>8でオレが貼った記事な
このスレでも反論の余地の出なかった良記事。Nimについてはともかく
Rustのクソさについては本当によくまとまってる

631 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 12:34:03.16 ID:c3YkgC6b.net]
真正のアホだった

632 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 17:49:56.62 ID:ay5pVfJh.net]
だからさー。文句あるなら記事に反論してみなよ

取り下げられた記事以外誰も出せないまま人格批判だけとか全く理論的じゃないし
そういう人ばっかだよねRust信者って

633 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 18:20:34.36 ID:tEqpfdQL.net]
ここ本スレじゃなかったのか
お邪魔しました

634 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 18:35:12.47 ID:ZtwQwgWl.net]
>>632
archive. fo/7NUr2
なんかある?



635 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 18:46:46.63 ID:ay5pVfJh.net]
>>634
だから取り下げられた記事は反論にならないって
本人が間違いだって取り下げたんだから

636 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 19:00:49.88 ID:c3YkgC6b.net]
>>635
読んでもねぇのに自分勝手に判断して否定するバカが
「理論的じゃない」とかよく言えたな

その言葉そっくりそのままお返しするよ

637 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 20:30:12.03 ID:Do17eRfw.net]
>>636
自分勝手じゃないよ?
そもそも論を取り下げたのは向こうじゃん
取り下げられた論が議論の俎上に上がるのはおかしいでしょ

638 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:05:10.85 ID:6Hcg3ucp.net]
ある人がどのレベルでプログラミングしてるか、という差がある
ある人にとってはプログラミングとは設計作業に他ならず
ある人にとってはプログラミングが指の労働でしかない

書き間違えるから、書き忘れるから、という理由でもって
しょうもないバッドノウハウを拝み続ける者すらいる
塩と砂糖を入れ間違う、塩を入れ忘れる、自称料理人
そーいうレベルのプログラマ

639 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:10:50.36 ID:tPTNHe4P.net]
クソ言語はRuで始まるの法則。
ソースはRubywwwww

640 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:12:31.35 ID:c3YkgC6b.net]
>>637
何故取り下げたかの理由も書いてあったがそっちのほうは完全に消えたかな…
アーカイブすら残ってなさそうだ…
「他の記事を貶めるような記事は品性が疑われるからやっぱり取り下げる」
みたいな理由だっと思うけど、どうせお前はそれも認めないんだろ…

………ふぅ………もういいよ……
お前の頭ん中ではRustはクソ言語で良いよ……

641 名前:デフォルトの名無しさん [2018/06/21(木) 21:16:43.31 ID:THBJN+Sm.net]
まあ人気であることは否定できないし好きに言わせとけば

642 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:55:24.51 ID:cUkhcSdq.net]
Rubyスレいってこい

643 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 22:10:18.40 ID:IDDH/Zj5.net]
>>637
そういう人だね
お前だけは確実に

644 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 06:32:29.82 ID:dlC04wo2.net]
rustup update stable



645 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 07:54:28.27 ID:eG6Vx+RS.net]
クソ言語に固執し続けるクソ人間

646 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 08:36:26.70 ID:YRNyKvjT.net]
1.27.0がstableになったんね

647 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 08:31:56.29 ID:XcMMhDbo.net]
rustは個人開発向けで仕事に使うものじゃないのね。

648 名前:デフォルトの名無しさん [2018/06/23(土) 09:39:24.90 ID:tcOUUI9f.net]
ソースは?

649 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 10:17:10.81 ID:YCFgkK7r.net]
Cargo.tomlに対応するrustcの最低バージョン番号を書く方法ってある?

650 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 10:36:49.30 ID:SR6K28vn.net]
ネタスレで質問するやつはキチガイ

651 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 11:42:32.40 ID:FNwUUYYn.net]
スレチ
Rustスレに行け

652 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 12:03:08.67 ID:SR6K28vn.net]
キチガイがまともなふりして質問するふりするんだよなー

653 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 12:36:47.01 ID:VZhdie4n.net]
>>649
https://qiita.com/tatsuya6502/items/8b31e2b162aff78787fe
プロジェクトフォルダにrust-toolchainファイル置いてその中で指定出来るみたい
toolchain指定なんでrustup必須になるのと固定指定しかできないっぽいけど

654 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 17:56:54.88 ID:ADF05MCP.net]
みんな英語どうやって勉強したの



655 名前: mailto:sage [2018/06/23(土) 18:09:48.96 ID:OlLfOCSW.net]
>>654
受験勉強で

656 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 18:09:55.67 ID:592i1cd7.net]
>>654
俺は英語なら分かるんだけど、日本語はさっぱり分からん

657 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 18:11:27.27 ID:ADF05MCP.net]
>>655
すげーな
オライリーのやつKindleで読んでるけどまず訳すのが大変だわ

658 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 18:27:07.96 ID:ADF05MCP.net]
>>656
英語圏に生まれたかったと切に思う

659 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 19:52:59.41 ID:1v1LX/MG.net]
訳さず英語で読んだ方が…
情報の早さ・量・正確さが段違いだし原著読むと意外と難しい単語使われてない。
bind(bound)を束縛とかアホかと。
せめて結びつけとかにしろよと。
翻訳のセンス無さすぎ。
もしくはわざと小難しくして地位を守ってるのか…

660 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 19:59:41.54 ID:G+zkBspm.net]
結びつけだとassociateの訳ともとれそう
英語と一対一で対応できる和訳の方があとから英語情報に触れるときのハードルを下げると思う

661 名前: mailto:sage [2018/06/23(土) 20:01:25.05 ID:OlLfOCSW.net]
>>659
get / put / take なんかで言い換えしたからといって、わかりやすくなったとは思わない

662 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 20:13:20.08 ID:1v1LX/MG.net]
それにしても〜を〜に束縛しますとかセンス無さすぎる。
明治時代の翻訳見習ってほしい。
漢籍の素養が必要だが…

663 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 20:59:38.24 ID:hXAC/kvi.net]
逆に聞くが「変数にbindする」って日本語にどう訳したら自然なんだ?「結びつける」は別の意味になるぞ

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

「縛りつける」みたいな感じになるしかないと思うんだが
束縛は単純に漢語にしただけで大差なかろう

664 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 21:03:29.72 ID:YCFgkK7r.net]
>>653
ありがとう
一応そういうのあるんだ
そのページの下に書いてある、edition 指定出来るようになるのを期待、という感じかな



665 名前:デフォルトの名無しさん [2018/06/23(土) 21:53:58.53 ID:eYj7ZreJ.net]
> 翻訳のセンス無さすぎ。

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

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

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

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

束縛っていうふつうの単語を小難しく感じると白状し
地位を守るだのなんだのという珍妙な価値観まで丸出しにするとは恐れ入る

666 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 22:00:12.26 ID:iDCSFlv+.net]
まあ、英語のbindからして数理論理の変数束縛と同じ単語を別の意味で使いまわしてる
近い分野なんだから専門用語もう少し考えてくれても良かったのに

667 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 22:31:42.63 ID:3sIWKIRG.net]
慣れちゃってるから気づきもしなかったけど代入からして大概だよな。
英語だと単にassignだぞ。

668 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 22:44:14.17 ID:YCFgkK7r.net]
その点、グーグルは気が利いてて、
「錆は、安全性、スピード、並行性に重点を置いたシステムプログラミング言語です。
以前のバージョンのRustが錆びてインストールされている場合、」
だからな

669 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 00:43:46.88 ID:8RP1t8O+.net]
「バインドする」で良いのでは
traitとかcrateとか訳すとよくわからなくなるもの多いし全部カタカナでよい

670 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 00:53:31.43 ID:EUL7CrQi.net]
a に 1 を綴じます。

671 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 01:02:45.16 ID:AYN9x63N.net]
タイプアノテーションのないバリアブルのタイプはライトサイドをエバリューションしたときのタイプになります

672 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 02:00:22.91 ID:cQRh0RXw.net]
是々非々だな。
型アノテーションのない変数の型は右側を評価したときの型になります
束縛するはバインドするでよかった。SMの趣味ないし。

673 名前:デフォルトの名無しさん [2018/06/24(日) 07:41:58.64 ID:yrJGTcca.net]
束縛と代入ってなにか違うんけ?

674 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 08:29:18.59 ID:4dDfbtJe.net]
誰に確認したわけじゃないが、変数に何か値を設定するのが代入で、値に名前を付けるのが束縛だという認識
fn foo(...) {...} は、ある関数に対しfooという名前をつけるので「関数をfooに束縛する」とは言うかもしれないけど、
「fooに関数を代入している」とは言わない、みたいな



675 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 09:14:33.52 ID:aLprG8s0.net]
緊縛と挿入!

676 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 09:46:27.06 ID:dcl6yRWH.net]
単にイミュータブルかミュータブルかの違いでないの?

677 名前:デフォルトの名無しさん [2018/06/24(日) 09:52:28.95 ID:yrJGTcca.net]
>>674
伝統的な表現だと宣言に近いニュアンスかな

678 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 10:29:37.13 ID:O0XPf3sp.net]
rustはバインドしていない状態の変数も合法だからややこしい

let hoge;
hoge = 100; // これをコメントアウトするとコンパイルできない
println!("{}", hoge);

679 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 12:51:16.68 ID:1I2gvIDj.net]
初心者なんですが、文字列を作成して返す関数を作るときって、
fn hoge() -> String { "hoge".to_string() }
と書くものですか?
それとも
fn hoge() -> &'static str { "hoge" }
と書くべきでしょうか?

680 名前:デフォルトの名無しさん [2018/06/24(日) 13:59:02.13 ID:yrJGTcca.net]
その例だと関数にする必要なくない

681 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 15:24:02.20 ID:7t4PbT1U.net]
>>679
テケトーにググっただけ

つ https://qiita.com/Mizunashi_Mana/items/db88cb0bff002abce1ae

682 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 18:18:06.50 ID:ImbiQntl.net]
Stringもstrも返す可能性があるなら Cow<str> で
それ以外なら使えるときは &str を使うのが良いのでは

683 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 19:01:12.28 ID:n+g5Cjrk.net]
Stringとstrを両方残しちゃうあたり
優柔不断でグダグダな言語に思えてしまう

684 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 19:14:57.34 ID:knj+uGWY.net]
はあ…?



685 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 19:22:46.99 ID:rqN/F7y5.net]
C FFIに関する技術資料ってどこにあるんだろ?
ttps://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/ffi.html
にチュートリアルはあるけどexternの記述方法とかがわからない
見よう見まねで書けなくはないけどそのまま行くのは事故の元だし
ついでにlibcが何をしているのかもわからない

686 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 20:18:07.31 ID:gRETAB5B.net]
>>685
CのヘッダからRustのインターフェースを自動生成してくれる
bindgenを追っかけてみればよいかと
https://github.com/rust-lang-nursery/rust-bindgen

687 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 22:15:14.01 ID:W9MJDxOG.net]
>>684
せめて理論的に反論しろよグダグダ言語の信者

688 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 22:29:21.43 ID:ztKvyOBw.net]
>>687
ごめんなさい
論はどこですか?

689 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 23:26:54.62 ID:rqN/F7y5.net]
>>686
えぇ・・・ソース見るしかないのかよ・・・
リファレンスマニュアル見てもちゃんと書いてないんだよな
さらにググってもリファレンスマニュアルが引っかかってこない罠

690 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 23:57:53.79 ID:O0XPf3sp.net]
>>685,686
unsafeまわりの文書に入ってる(ただしdraft)
https://doc.rust-lang.org/nomicon/ffi.html
公式文書はgithubのorganization(rust-lang、rust-lang-nursery)から探している

691 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 00:22:53.39 ID:U0L6J6Ez.net]
C言語ライブラリの関数を3回呼び出すコードと格闘すること数時間。ようやく動いた
まだ不明点は残っている
・#[link(〜のkindが何を示しているのか判らない
 C FFIの使用例を見るとよく見るんだが・・・
・C言語配列の渡し方が不明
 元は
 >int p[]={16,9};
 >foo(p);
 とりあえず
 >foo("\x10\x09".as_ptr());
 などと書けばデータ上は整合するから動くけどどう見てもスマートな記述方法ではない
・文字リテラルの仕様が不明
 ↑の表記を得るのに数回試行錯誤した

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

>>690
ありがとう。kind値について書いてありますね。静的リンクだとkind = "static"らしいですが
付けても付けなくてもファイルサイズは大差ないようです。何が違うのだろう

692 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 12:50:29.35 ID:vFqeQKwN.net]
Cの配列は第一級の値じゃないからas_ptrが正攻法だと思う

693 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 20:19:17.73 ID:U0L6J6Ez.net]
>>690によればFFIで使用できる物として
・#[repr(C付きのstruct
・#[repr(C付きのenum
・box?
・vec
・str
が挙がっているけどCと互換性があるのはこれらのみって事なのだろうか
vecを試してみたら動いたけどextern時に安全じゃないから#[repr(C)]付きのstruct使えなどと言いだした

>>692
マジかよ!確かに文字列は汎用性が高いけど可読性が良くない・・・必要に応じて抽象化しろという事か

694 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 20:24:02.61 ID:J2kal8dh.net]
Rustの側では変更しないけどCの側で変更するような変数ってmutにしないと駄目よね?



695 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 22:00:13.27 ID:U0L6J6Ez.net]
あっ、ヤベェ・・・いきなり重大なバグ出してら
× 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"に変換してくれるようなのが欲しい

696 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 22:05:44.09 ID:KKbqvHaH.net]
うわこれは読みたくないw
難しいもんだな

697 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 22:59:19.25 ID:U0L6J6Ez.net]
ちなみに間違っている状態でも呼んだC関数は正常に終了します。まさにunsafeです。怖いです
何か対策を考えないと大事故を起こしそう
要素数2しかないのにstructを書くのはコード効率の点からも可読性の面からもあまり良いとは思えないし・・・
いろいろ試してみたら
>let p: [i32; 2] = [16, 9];
>foo(&p);
ならいけるようだ。コンパイラは何も言わないけどこの表記が適切かどうかは不明

Rubyだと
foo([16,9].pack("i2")) #配列をint2個分の文字列(=8byteのバイナリ列)に変換
とか書けるんだよなぁ。コストは安くないけど>>695みたいなポカミスは起こらない

698 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 23:46:12.87 ID:kYoiRQin.net]
>>697
何がしたいかよく分からんが
何故に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と対応する型は何かを考えれば良い

699 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 00:21:30.73 ID:kImvQJUH.net]
>>698
いや、isizeはまずいんじゃない?
例えばx86_64だとisize:64bit,int:32bitだし。
libcクレートのc_intならアーキテクチャ毎に適切なサイズになるから
こちらがいいかと。

700 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 00:26:36.57 ID:kImvQJUH.net]
ついでに言うとFFIするときの型はプリミティブ型以外でも
とりあえずlibcクレートを探すといい。
まぁマイナーなアーキテクチャだと間違ってたりすることもあるから
確認は必要だけど。

701 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 00:50:28.55 ID:85MS96V/.net]
とりあえず仕返しにrubyスレ荒らそうぜ
mevius.5ch.net/test/read.cgi/tech/1523954817/

702 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 00:50:41.38 ID:Hc+GAUt1.net]
>>699
あれ?そうだっけ?
うかっりしてたゴメン

そう言えばCのintはポインタのサイズに合わせるんじゃなくて
アーキテクチャ毎に変わるんだったっけか

703 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 01:08:16.37 ID:Hc+GAUt1.net]
調べたらCのintにRustで対応する型はisizeじゃなくてstd::os::raw::c_intだったわ
libcのc_intとの違いがよく分からん
対応アーキテクチャの数か?

704 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 02:21:07.36 ID:kImvQJUH.net]
>>703
一応libcはno_stdでも動くというメリットがあった気はする。
逆にプリミティブ型限定でも依存ライブラリ増やしたくないならstdなのかな?



705 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 08:11:12.99 ID:xzmHFSgh.net]
>>698
あなたの言うとおりですが、そのような情報はどこをから得られるのか・・・
>>690等のFFIに関する資料に書いてあるようには見えません
std::os::raw::c_intも>>703を見て探してみたら
ttps://doc.rust-lang.org/std/os/raw/index.html
ここにあるのか

配列等の長さが変わる型のC互換性に関する情報もどこにあるんだろ
アドレスの連続性とメモリの確保が保証されている必要があると思いますが

706 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 08:35:08.35 ID:Hc+GAUt1.net]
>>705
資料が少ないのはまだ普及してない言語では仕方がない
FFIとか皆が頻繁に使う機能じゃないようなものはなおさら
Cの配列とRustの配列は互換があるはずだけど
悪いがその情報をどこから手に入れたかは覚えていないし
信用されても困る(ついさっきも間違えたしね)
場合によっては資料探すよりソースコード読んだほうが早いことも多いし
根気良く調べるしかないとしか言いようがない
あとはFFIみたいなunsafe部分は出来る限り念入りにテストを書くとか

707 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 09:06:54.14 ID:ffYAyO/t.net]
>>705
arrayとsliceの連続性保証はここですかね。
https://doc.rust-lang.org/reference/type-layout.html#array-layout

708 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 10:23:55.54 ID:MUW40HUm.net]
今のnightlyだとclippyビルド出来ないよね?
ビルド出来る最後のバージョンと、それをインストールする方法教えてください

709 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 12:18:25.05 ID:8xBVh24a.net]
RustのABIについてはドキュメント増やすことはできるだろうけど
それ以前の問題としてCのABI知らないとFFIつらいのでは

710 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 18:47:03.15 ID:xzmHFSgh.net]
付き合ってくれてありがとう

まとめると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があれば一通り出来そうか

711 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 20:49:29.40 ID:qO0rk7ac.net]
vecもas_ptr用意されているし非推奨と言うことはないはず
sliceにderefできるし

712 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 23:28:33.57 ID:+xThVrkU.net]
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へ入れるようにしたら所有権で怒られて動かなくなった
同じコードでも型によって所有権の移動のしかたが違うのか

713 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 00:01:15.59 ID:a5PFJKPe.net]
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();

714 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 00:13:14.65 ID:95B8/IDl.net]
あとC関数の引数&戻り値はmove(ポインターか実値)しないとだめじゃない?
&付けて参照渡しにするのはよく分からない、たぶん未定義動作じゃないかなあ



715 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 01:04:32.64 ID:9Rd9nmLi.net]
>>708
clippyは最新のnightlyは**追ってない**けど常に開発中だから
ビルドできるバージョンは常に変わる。
自分の環境のビルドできる最大のnightlyに合わせろしか言えん。
常にclippyを使い続けたいなら環境の方をclippyに合わせないとだめ。

>>710
- 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レイアウトならクレートあるぞ。

716 名前:デフォルトの名無しさん [2018/06/27(水) 02:41:49.66 ID:yfKVc+j6.net]
Rustだけ覚えればいい時代はまだ来ない
C/C++の知識皆無では

717 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 09:44:32.66 ID:SAllJH2o.net]
オライリーの訳本が8月に出るのね

718 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 10:05:32.17 ID:YMyBwU5o.net]
本が出る頃には内容が古くなってるやつだろ

719 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 14:44:22.85 ID:3NxQrIF4.net]
>>717
英語で出る分には多目に見たが、日本語で出るんなら出版社の不買運動だな
どこが訳すか知らんけど

720 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 17:59:19.20 ID:06nI5JoX.net]
不買運動何人参加するの?大規模にやろうぜ

721 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 18:21:05.70 ID:nwq6g8g7.net]
英語なら多目に見るwwwwwwww

722 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 18:35:05.31 ID:hr/rqCUy.net]
>>713
ありがとう、そういうオチか。&で正常に動かないのも納得です
暗黙の変換って便利ですけど理解が浅いとハマる元だったりしますよね
不適切な入力を入れると自分が書いたつもりのコードとは無関係っぽいエラーを出して???になったり

>>714
#[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はポインタのサイズらしいしこっちの方が楽かも

723 名前:デフォルトの名無しさん [2018/06/27(水) 19:40:13.19 ID:5BauIrrs.net]
訳本情報どこにある?

724 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 19:41:49.80 ID:Z4vkTjjE.net]
てかrust覚えるなら普通にc++のスマポくらいは知っとかんとわけわからんだろ。



725 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 19:45:28.45 ID:luhHLeJ1.net]
今日発売の新しいrust本買った人いるのかな
評判良ければKindle出た頃に買おうかなと思うけど

726 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 20:11:21.04 .net]
貧乏なのでPacktの糞本を$10セールの時しか買えない

727 名前:デフォルトの名無しさん [2018/06/27(水) 20:16:03.57 ID:aPrQo9aq.net]
訳本amazonにあったわ
早速予約した

728 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 20:16:12.37 ID:YMyBwU5o.net]
オライリーの本って、オンラインに無料であるやつとおなじやなかったん?

729 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 21:01:38.86 ID:IGU3gLqH.net]
>>728
オライリーの原著は去年12月に発売、今年8月に訳本

今日発売された英語の本は公式ドキュメント(第2版)の印刷版
版元はno starch press

730 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:06:21.38 ID:cJz1WTLf.net]
>>722
他の人も似たようなこと書いてるけど、Cの配列は結局はポインタに過ぎないから
C側がポインタを求めれば、当然Rust側でもポインタを渡す

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

The Bookちゃんと読んだ?読んでないなら一度きちんと通読することを勧める

731 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 06:00:08.46 ID:YYPKz5qu.net]
rustやるのにあったほうがいい前提知識ってどれくらい?
c++とhaskellがまともに出来ないときつい?

732 名前:デフォルトの名無しさん [2018/06/28(木) 06:30:25.53 ID:fobuFGlz.net]
そんなわけないだろw
どっちかてと根気が必要だ

733 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 07:54:11.40 ID:1UW06GNd.net]
いや最低限c++のコンストラクタ、デストラクタの動くタイミングくらいは知っとかないと無理だろ。

734 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 08:12:22.16 ID:MOChRiis.net]
>>730
一応deriveでCopy(とClone)を実装すればいいらしいと言うところまでは確認しているのですが
1.std::os::raw::c_voidへ追加で実装できるのか未確認(できたとしてもモンキーパッチになってしまう)
2.別名の型を新規に作る(usizeもしくはusizeへのエイリアスに対するメリットが思いつかない)
なもんで問題なさそうならusizeで良いかなと・・・
というかCのライブラリを使うと>>722みたいなケースは良くあると思うけど他の人はどうしているんだろ
libcのc_voidもlib.rsを見るとstd::os::raw::c_voidと同じみたいだし同様の現象が起きそうです
ググると引数はc_voidを使って戻り値はusizeを使っているようなコードも出てくるしusizeが正攻法なのか?

ちなみにこのコードだとusizeを使ってもmutが不要の警告が出るんですよね。これもそんな事を言われても
困るのですが



735 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 08:55:27.92 ID:bLMLowda.net]
>>734
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では借用して呼び出し後に返してもらえばいいっぽいけど。

736 名前:デフォルトの名無しさん [2018/06/28(木) 10:18:12.24 ID:MyWFnKdA.net]
>>733
えーなんで?rust書いてる人の大半は知らないでしょ

737 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 10:38:48.43 ID:LheEK93m.net]
こりゃC++まだ覚えてない人はrustなんか勉強してる場合じゃないねw

738 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 12:56:07.56 ID:rDWw9n99.net]
c++といってもRAIIとスマートポインタくらいで良いのでは
知らなくてもtrplなど読めばなんとかなるとは思うが
代数的データ型なども同様

あとは用途次第だけどFFIやるならCのメモリレイアウトくらいは押さえておいた方がよい

739 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 13:32:58.62 ID:LheEK93m.net]
そんないい加減なことでいいのだろうか?
ちゃんとC/C++一から十まできちんと理解した方がよいのでは?
それからじゃないとそこがいい加減でRustなんて本当に使えるようになったと言える?

740 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 14:08:04.32 ID:QGaIyydK.net]
C++完全に理解した人間なんて世界中に何人いるやら

741 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 14:14:44.86 ID:rY43/kt0.net]
Cはともかく、C++に時間を割く必要はないじゃろ

742 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 14:20:27.58 ID:61gzDvUq.net]
むしろCすら知らないほうが変な先入観とか無くて所有権とかライフタイムとか素直に理解しやすそうな気もする

743 名前:デフォルトの名無しさん [2018/06/28(木) 14:28:13.71 ID:MyWFnKdA.net]
必要という理由が分からない
言語なんて使いながら覚えていくもんでしょ

744 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:28:41.63 ID:a2wUxb0k.net]
>>739
RustはC/C++分かってないと書けない
→C/C++を分かるまでやる
→C/C++がわかってしまえばそもそもRustなんて不要だと気づく
→Rustを捨てる



745 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 16:07:41.79 ID:cJz1WTLf.net]
>>731
確かにC++とHaskellが出来きればRustの習得にはそれほど苦労しないだろうとは思う
ただ、理解できるまでにかかる時間量の問題であって、それがないとキツイってわけじゃない
むしろ、Rustの学習するためにC++とHaskellを先に学習するとか時間の無駄
The Bookが懇切丁寧に解説してくれるので前提知識はなくても全く問題ないと思う
ただし、Goみたいな言語と違ってサンプルコード読めばある程度理解できて
何となくで書けてしまうような言語ではないのでThe Bookの熟読は必須
それと、FFIする場合はある程度のCの知識は必要だよ

746 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 16:49:45.85 ID:Z76aQv2+.net]
FFIしたいけどCは知らん、とかレアケースだから
そんな心配はせんでいい

747 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 16:53:35.27 ID:rY43/kt0.net]
別にRustは大して関数型言語じゃないし、Rustのために他の関数型言語から、っていうのは本末転倒すぎるな

748 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 16:59:30.65 ID:Z76aQv2+.net]
全然モナドってないし、関数型言語フレーバーぐらいでしょ

749 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:13:53.31 .net]
C++は速いがコーディングストレスで禿げる
Rustで若干のパフォーマンスを犠牲にしてでも、いかに毛髪を守れるかがテーマ

750 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:18:23.47 ID:GP5sTNn0.net]
>>749
C++程度で禿げてたらRustのコンパイル通らん

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

つまりRustは実用にならん。C++er養成ギプスって話ならわかる

751 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:41:56.51 ID:BmtmAhz0.net]
結論: やっぱりC++からしっかりやったほうがよい

752 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:46:58.11 ID:GP5sTNn0.net]
>>751
違う違う、そもそもRustは不要って結論な

C++勉強してC++そのまま使い続ければいい

753 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:47:09.81 ID:tKvy+NRw.net]
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

754 名前:デフォルトの名無しさん [2018/06/28(木) 17:56:38.73 ID:MyWFnKdA.net]
なんだコンパイルできないおじさんか。。



755 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:32:36.30 ID:f0Ft93Jb.net]
>>747
単純に最初期のRustコンパイラはOcamlで組まれてたからって事情でないの

756 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:34:20.70 ID:f0Ft93Jb.net]
>>750
C++より潜在的なメモリ管理バグを減らせるってのは十分有用な話では

757 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:54:33.03 ID:frbOjHXy.net]
リストとリスト操作をなんで組み込んでくれなかったのかな?
::とか@とかあるだけでだいぶ捗るよね(一部の人にとって)

758 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:41:35.09 ID:Z76aQv2+.net]
パフォーマンス面だけで言えば、リンクトリストは問題外だからじゃない?

759 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:19:23.05 ID:X+ujNNAX.net]
コンパイルできないおじさんのコードもNLL有効にしたらコンパイルできたから
来年にはrust書けるようになるよ

760 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:29:59.05 ID:1UW06GNd.net]
別にどの言語だろうと所有権を考えるってのは普遍的に必要だとは思うぞ。
rustだろうとc++だろうとはたまた動的言語でもメモリ以外にも資源管理なんて
問題はどこにでも出てくるわけで。

761 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:30:03.07 ID:rY43/kt0.net]
consとかが使えないのはmutとの兼ね合いもあるんじゃないの
あれ完全にイミュータブルリスト向けだもんよ

762 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:16:31.35 ID:YYPKz5qu.net]
https://www.reddit.com/r/rust/comments/8ub964/microsoft_announces_using_rust_to_build_some_of
MSもRust使ってるんですか
やるしかない

763 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:22:26.06 ID:MOChRiis.net]
>>735
なるほど。c_voidの正体はそれでしたか

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

*mutを使うコードを検討していて気がつきましたがRustの生ポインタにfunc1が返すアドレスを入れると
Cと同じ危険を抱えますよね。func3でアドレスがNULL=0になりますからその後に触ると当然クラッシュします

764 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:27:33.58 ID:wCMJyKP8.net]
NLLいまだに理解できなくて使えない



765 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:36:28.71 ID:cJz1WTLf.net]
>>762
actixとactix-webのメインコントリビュータもよく見ると普通にMS所属の人だった
ttps://github.com/actix/actix/graphs/contributors
ttps://github.com/actix/actix-web/graphs/contributors

766 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:45:00.19 ID:CykyBbY/.net]
MSは英語なので、大目に見てもらえる

767 名前:デフォルトの名無しさん [2018/06/28(木) 22:08:43.56 ID:fobuFGlz.net]
> Please never sell Rust to Microsoft!

ちょっとわらった

768 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 22:56:56.15 ID:mQsBu3Yx.net]
言語に関してはMSがオーナーになるのは大勝利だろ

769 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 23:58:14.47 ID:aJbqINcy.net]
ではここからはC# おじさんどぞー

770 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 00:13:26.39 ID:9NU4CCEP.net]
MSには新しいプログラミング言語のQ#があるから

Q# 【量子プログラミング】
https://mevius.5ch.net/test/read.cgi/tech/1513059627/l50

771 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 00:20:17.66 ID:1B/tcpoY.net]
汎用言語でないからRustと競合はしないな

772 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 05:02:04.02 ID:HciN/Bk/.net]
Visual StudioでRustサポートされないかな
rlsが不安定すぎるのでMSが作り直して欲しい...

773 名前:デフォルトの名無しさん [2018/06/29(金) 07:15:45.03 ID:pVbM0h49.net]
rlsもracerもポンコツよね
あんまり力入れてないのかな

774 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 10:18:57.05 ID:azKeAftH.net]
intelliJ使えばええやん
インテリじゃない人もタダで使えるよ



775 名前:デフォルトの名無しさん [2018/06/29(金) 11:21:37.40 ID:eINaY/I2.net]
支援機能だけ考えるとそうなんだけどさ
手に馴染んだemacsから離れるのは簡単じゃない

776 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:06:31.66 ID:1B/tcpoY.net]
ワイもIDE使いこなせない

777 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:09:37.82 ID:l0U/js7n.net]
intellijをつかうのです…
vsなんかよりよっぽどいいですよ…

778 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:09:46.01 ID:ZOJKMSLg.net]
>>764
従来のborrow checkerの制約が緩くなるだけだから従来の理解してれば不自由なく使えるはず

779 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:27:36.55 ID:1B/tcpoY.net]
intelij買ったけどemacs使っちゃうのよね。コード書くのにmouseが必要になるのが受け付けないみたい。

780 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:17:46.77 ID:HciN/Bk/.net]
intellijちゃん自力でパースしてるのアホでしょ
CLionもclang使わず自力でやってるけどリリースから随分経つのに初歩的なバグ残ってるみたいだし

781 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:55:33.43 ID:abdfGqyU.net]
>>735の方法だとこんな感じなのかな
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にする必要がありそうだけど

782 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:25:27.91 ID:jUvi1FZV.net]
英語は多めに見るおじさん、今頃rustについて必死で勉強して弱点探してるのかな

783 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 01:38:16.37 ID:bJf+PXWq.net]
>>781
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のプロトタイプはないよね?

784 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 01:40:31.49 ID:bJf+PXWq.net]
func1のxはu8だからunsigned charかuint8_tだね



785 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 01:59:30.31 ID:VVUAg8sI.net]
>>783
func1の引数はRustのコンパイラにその型を使えと言われたから
func2の引数はfunc1の返値に合わせた
func3の引数はfunc1が返したアドレスが格納されているアドレス。Cで言うポインタのポインタでABC **z
自分も詳しいわけではないので勘違いしているかもしれないが一応動いている

786 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 05:09:23.98 ID:bJf+PXWq.net]
>>785
ダブルポインタだったのか
それなら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)で大丈夫なはず

787 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 11:01:24.70 ID:6fEIEQu0.net]
ダブルポインタはあんま想定してなさげな気はする。
俺だったらもう一枚、インターフェイスかましてもう少し楽なインターフェイスにしてから
rustと繋げるわ。

788 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 11:27:27.95 ID:BB0BPsjY.net]
結局C/C++ある程度わかってないと話にならないよね。
経験ないやつはいきなりrust勉強してる場合ではない。

789 名前:デフォルトの名無しさん [2018/06/30(土) 12:46:04.79 ID:gEYLih9T.net]
コンパイルできないならまずプログラミングを勉強しなおしたほうがいいよ

790 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 14:28:27.26 ID:d1l1Trl+.net]
FFIの話をrust全体の話に主語をでかくしてるおっさんがおるな

791 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 16:28:11.02 ID:oxrLiD+S.net]
FFIもrustの魅力の一つなのですが?
C/C++知らないやつはいつまでたってもrustを全て分かったことにならない
半人前のまま
別に必要なとこだけ使うスタンスでもいいけど半人前のクセにいっぱしのrustプログラマーヅラしないでね

792 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 16:34:04.77 ID:WiulWXxB.net]
昔はアセンブラ知らずにC++語るなとか言われてたが時代は変わったもんだな

793 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 16:40:34.19 ID:jlw7G6p9.net]
結局どの言語を選べばいいのかわからなくなった
C++?Go?

794 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 17:06:44.52 ID:NH6TT+Fu.net]
Coqを選べばいいと思うよ



795 名前:デフォルトの名無しさん [2018/06/30(土) 17:07:23.25 ID:QJJEkoJ9.net]
目的に合ったもの
やりたいものをやればいい

796 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 17:07:54.55 ID:5+sKgUjT.net]
迷うならGoでいいんでは。

797 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 17:10:05.48 ID:CMs/fWc6.net]
Prolog

798 名前:デフォルトの名無しさん [2018/06/30(土) 17:38:54.49 ID:RHrrdh8p.net]
rustを視野に入れながらgoという選択はない
kotkinかswiftかgoかってなら分かるけど

799 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 17:52:45.29 ID:5+sKgUjT.net]
分からないなら無理してrust使わなくていいって意味じゃろ

800 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 18:08:54.39 ID:9Q6R3Qzj.net]
腐ってないでお前らも俺と一緒にRustで競技プログラミングしようぜ!

https://yukicoder.me/submissions?submitter=5971

801 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 18:21:37.09 ID:UB7qEnEv.net]
クロージャで再帰が出来ないのって所有権的な問題?

802 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 18:24:45.75 ID:cH9c2bse.net]
rustは競プロには向かない
https://users.rust-lang.org/t/rust-for-competitive-programming/17682

803 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 18:38:35.11 ID:cH9c2bse.net]
クロージャの再帰ってこれのこと?

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

804 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 18:57:41.58 ID:dTg1EP/S.net]
>>803
おー、できた
ありがとう
ローカル関数だと外部変数キャプチャできないし、クロージャだと再帰できないし、
同時にしたいときどうすんのかなーって思ってたから
そんなに使うこともないだろうけど、心に留めときます



805 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 22:59:14.25 ID:pdhum8J2.net]
>>786
ありがとう。なるほどそういう書き方もあるのか。確かに書き換わるので&mutの方が適切ですね
欲しいのはアドレスなのだからと単にアドレス演算子&を付けていました

unsafe外から任意のアドレスにあるデータへアクセスするにはその部分を関数化するようなのかな
一般的に言うプロパティの読み書きをプログラマブルに出来れば綺麗に書けるけど無理なんだろうなぁ
()無しの関数呼び出しとも言えるけどこれが出来る言語は少ない

806 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 23:04:00.05 ID:BB0BPsjY.net]
相変わらず驚き最大の言語だな

807 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 07:43:42.19 ID:XZ+Fcjv4.net]
>>806
例えば何に驚いてんの?
Rustの目的はシステム言語だが、目的から乖離してるとこって何?

808 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 08:30:53.21 ID:vf9gJxu2.net]
マルチパラダイムの場合、驚き最小の原則の法則に反するかどうかは実装者の責任じゃないだろうか

809 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 08:46:31.97 ID:E4o6QfBe.net]
抽象的なことしか言わなくなったんだよ
機械語のレベルと相性が悪いし

810 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 11:50:23.63 ID:YY7LPhac.net]
>>808
半分はその通りだが、それならc++で良くね?になるぞ。

811 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 13:30:01.00 ID:TGjVBuJr.net]
日本語でこんなに議論が行われてることに驚いた

812 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 13:37:40.54 .net]
恥ずかしくて外国人には見せられない掲示板だ

813 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 13:54:17.46 ID:YY7LPhac.net]
そもそもcの呼び出しはメモリ管理モデルのギャップがあるんだから
どうあがいてもc++のが簡易にできるのは当然なんだよ。

814 名前:デフォルトの名無しさん mailto:sage [2018/07/01(日) 15:26:57.84 ID:HnzLcrw0.net]
>>811
このスレは英語推奨だぞ



815 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 01:23:28.76 ID:5g9b1rVY.net]
>ローカル関数だと外部変数キャプチャできないし、クロージャだと再帰できないし、
ここに関してはクロージャでないものをクロージャと呼ばなければ誰も驚かなかっただろうな。
javaは似非クロージャのことはラムダ式と呼んでるし。

816 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 01:51:37.55 ID:v1kLQBFZ.net]
Haskellの「外側のシンボルを参照することによる暗黙的な部分適用」はクロージャと呼ばれてるから
アレが許されるなら少なくともJavaのはクロージャと呼んでいい

817 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 22:14:52.04 ID:KKQokwkO.net]
>>816
javaのアレは元々クロージャ導入するつもりが、
仕様と実装でクソ揉めて妥協案としてクロージャ
じゃないものとしてラムダ式を作ったんやで。
だから意図的な"クロージャではないモノ"よ。

メモリ管理にgc使うからエンクロージャの束縛の解放に
制限ないから実質クロージャだし第一級関数だけど。

818 名前:デフォルトの名無しさん [2018/07/02(月) 22:54:50.18 ID:F0SAJ301.net]
hyper使って簡単なwebアプリ描いてみたけどわりと素直に書けるのね

819 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 16:24:59.60 ID:ZNPbo2Ku.net]
>>804は本当に満足してるのだろうか
>>803のやり方だとパラメータ増えてるじゃん
こういうのは既存のシグネチャに合わせられないと
単にひとつの関数を小洒落た書き方にしてみましたってだけにしかならないのでは

820 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 17:05:40.29 ID:ZNPbo2Ku.net]
連投になって申し訳ないが、環境をRefCellで持ち出す例を見つけた
ttps://wandbox.org/permlink/hkwccgD2oXp0fTm7
組み合わせて、802の2番目の例のstructを更にRefCellに入れたらシグネチャ変えずに行けるかな

821 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 17:29:45.80 ID:LuUToNY2.net]
>>819
一応満足してるよ
スッキリ書けないことがわかったから、素直にループで書くか、ローカル関数作って引数で渡そうと思えた
Rustは関数型じゃなくて手続き型だし、特に不満ではない

822 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 17:31:22.43 ID:nNrfrM83.net]
>>820
RefCell使うなら、Rustで書く意味ないだろ

823 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 18:19:36.75 ID:ZNPbo2Ku.net]
>>821
すまん、クロージャでないとできない用途(環境をキャプチャーして高階関数に渡す等)を想定していると
勝手に気を回してしまったみたいだ

824 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:26:26.07 ID:9JOKXkQl.net]
クロージャじゃないとできない用途って具体的にどういうものなの
想像つかなかったので単純な興味本位



825 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:32:07.93 ID:2DeV5pvZ.net]
例えば最適化ライブラリなどに目的関数を渡す場合などで
引数以外からパラメータを注入する必要がある場合。

826 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 22:38:00.99 ID:9ONgpSq2.net]
>>823
キャプチャ自体はクロージャで出来るから別に困ってないかな
たまたま再帰させたくなったときがあっただけだから

827 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 23:58:54.50 ID:6KvlcSKZ.net]
クロージャじゃなきゃできないことじゃなくて、
クロージャの再起呼び出しじゃなきゃできないことを聞きたかった
引数以外のパラメーターを差し込む場合、普通は再起は必要ないよね

828 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 00:52:48.93 ID:MQVza7QA.net]
風雲再起ぃ〜!!

829 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 01:08:42.88 ID:ace/1w5F.net]
1.28はrustdocするときソースコードのlintするようになったんの?
deny属性に違反するソースコードがドキュメント生成時にエラー投げる。

>>823
クロージャがある言語は普通、関数とクロージャ区別しないからその感覚はおかしくないと思う。
でもクロージャの実装上の制約とかライフタイムとかでループで書いたほうがいいと思うコードはある。

830 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 09:35:17.80 ID:7aH0kDWz.net]
>>827
それは、てっきり最初の>>801がキャプチャと再帰を同時に使いたいことがあったんとばかり

831 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 20:54:21.49 ID:1R4S9ii/.net]
>>827
ある種の動的なtree構造に対して探索、実行を繰り返すとか。。
やっぱ具体的じゃねーな。。

832 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 21:42:58.93 ID:JvJNYHQo.net]
最近rustの勉強始めたものです
この言語ってstatementなのかexpressionなのかをどういう方針で決めてんでしょう?
ifがexpressionなのはわかったけど、letはなぜstatementなんだろ?
他の関数型言語のようにexpressionでもよかろうに、と思った

833 名前:デフォルトの名無しさん [2018/07/04(水) 21:53:13.67 ID:gFgZc5FG.net]
KCX

834 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 23:31:21.37 ID:kqLSfqeN.net]
古いCで良く在る if ( (let a = f()) != 0 ) {} みたいなのが嫌だったんだろう。
そもそも、変数束縛が値を持つ必然性は無いよね。



835 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 23:32:39.47 ID:kqLSfqeN.net]
>>834
あ、ごめん。大嘘だった。
if let なんてのあったのね…

836 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 00:07:01.10 ID:wS7IFFVg.net]
他の関数型言語のletは随分来歴が違うイメージ。
let x = ... in expはラムダ式の糖衣構文の一種なので関数型なら容易に実装できて便利に使えるのに対し、
rustのletは手続き型の変数宣言の方が近い

schemeのletとdefineが全然意味が違うのを知ってると違和感無い

837 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 00:16:12.98 ID:OgxnbJsr.net]
>>832
この辺読めばいいかと。
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は所有権移動だけど、返り値を認めちゃうと
束縛先と返り値のどちらに移動すべきか分からない、ということかな。

838 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 00:52:35.42 ID:YJbjvjoP.net]
>>837
それは let a = (let b = c) がだめな理由にはなるけど
>>832の言ってる関数型言語風の let a = (let b = c in d) がだめな理由にはならないよね

839 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 01:22:02.41 ID:DZKRf+tO.net]
えっ、毎回コピーすんの?
それ無駄じゃね?

840 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 03:33:15.42 ID:CGu9cAAd.net]
>>838
ブロック式で let a = { let b = 1; let c = b + 1; b + c }; と書ける
けどミュータブルな変数を書けるからコードが関数型言語風になるかどうかは書き手次第

841 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:22:41.90 ID:yHZEHedG.net]
>>837
>>840

ほー勉強になりました
fnもいまいち釈然としないけど
もうちょっと読み進めてみます

842 名前:デフォルトの名無しさん [2018/07/05(木) 21:13:46.28 ID:nmRduEAc.net]
あるstructもとに任意のフィールドを追加した別のstructを定義することってできる?

843 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 21:35:03.85 ID:wS7IFFVg.net]
イテレータ系はみんなそれやってる
mapとかfilterとか、元のイテレータ+変換・フィルター関数みたいな構造体を返してくる

844 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 22:08:25.13 ID:uqSz2h6E.net]
へー今気がついた
strはmutの有無にかかわらずRO領域に配置される
sliceはmutの有無にかかわらずRW領域に配置される
つまり今風のOS上だと
strをポインタ経由で書き換えようとするとメモリアクセス違反
sliceをmut無しで宣言した物でもポインタ経由で書き換えられる
リンカの設定にもよると思うけどマイコンなどで使うときは注意が必要そう



845 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 22:15:27.91 ID:B3fauv+j.net]
えぇ…安全に使えないじゃん。キツツキに縛りつけてる意味ないじゃんrustの存在意義が…

846 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 22:46:05.11 ID:5CTMsWjW.net]
再現コードはよ

847 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 23:38:48.53 ID:+dwFnTVE.net]
unsafeの話でしょ
脊椎反射したいつもの人が見事に釣られている

848 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 23:53:13.69 ID:uqSz2h6E.net]
もちろん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にいるはずと思い込んでいるとハマるケースがありそう

任意の場所に配置するアトリビュートとかあるのかな

849 名前:デフォルトの名無しさん [2018/07/06(金) 00:07:24.39 ID:0SVgWEm6.net]
これのArrayのとこに書いてない?

https://doc.rust-lang.org/book/second-edition/ch03-02-data-types.html

850 名前:デフォルトの名無しさん [2018/07/06(金) 00:36:54.90 ID:iypT0A6c.net]
>>843
返すんじゃなくて定義したいんだけども

851 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 06:49:56.18 ID:Sybd3k2C.net]
>>842>>850
stackoverflowとリファレンスを見た限りstruct定義の入れ子はサポートしてない
https://stackoverflow.com/questions/23629201/nested-structs-in-rust
https://doc.rust-lang.org/reference/items/structs.html

852 名前:デフォルトの名無しさん [2018/07/06(金) 18:21:10.44 ID:iypT0A6c.net]
どうもありがとう。でもちょっとニュアンスが違う。

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

で3dが2dのxとyのフィールドと独自のzを持つようなかんじ
マクロで出来ないか精一杯やってみたが出来なかった
元となるstructごとにマクロ作ればできるんだけどそれじゃ意味ないし

853 名前:デフォルトの名無しさん [2018/07/06(金) 18:57:55.41 ID:0SVgWEm6.net]
設計見直したら?

854 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 19:23:23.92 ID:6zaAciaG.net]
>>852
Rust Design PatternsにはDerefでやるのはアンチパターンだと書いてあるけど、別の似たようなサイトではお勧め扱いだった気がする
https://github.com/rust-unofficial/patterns/blob/master/anti_patterns/deref.md



855 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 21:12:32.07 ID:CzZn5kZZ.net]
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つに

856 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:32:56.18 ID:odAPlBjD.net]
rustからrust-bindgenが吐いたC++のクラス使うのめんどくさいな

857 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:52:04.06 ID:Otm/KpKR.net]
ところで、全然話変わるんだけどさ、mutってどう発音してる?
自分は「むっと」ってよんじゃってて、なんか、かっこわるいんだけど。

858 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 19:12:39.63 ID:HR9VVpP9.net]
当然、「みゅっと」でしょ

859 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 20:15:18.96 ID:h+p+JRvo.net]
怒ってるのね

860 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 20:19:35.52 ID:Ty8z3s6n.net]
鬼太郎のCVほっぽりだして産休に入るみゅ

861 名前:デフォルトの名無しさん [2018/07/07(土) 20:58:49.46 ID:PbU76+k2.net]
mjúːtəbl

862 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:03:04.65 ID:cEw8AP4C.net]
ミュート

863 名前:デフォルトの名無しさん [2018/07/08(日) 00:41:02.43 ID:tBFClkmn.net]
tanakhがrustのクロージャー再帰を望んでいる

https://twitter.com/tanakh/status/1015609559673475073

864 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 11:33:21.07 ID:6xrO+JsL.net]
そりゃ入れないほうがいい証左になるなw



865 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 13:33:35.86 .net]
みゅう太

866 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 02:59:46.84 ID:4B4QAQi1.net]
>>863
いつまでtanakhなんてスパコン詐欺師を崇めるんだろうなこのスレの住人

867 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 07:41:39.43 ID:DXSSRVdR.net]
国内の会社は大目に見てもらえないから大変だなあ

868 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 09:23:25.63 ID:6MpumzZl.net]
NEDOとかダメだろ

869 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 22:56:35.23 ID:M/GPMU7W.net]
「nvidiaの倒し方、知らないでしょ?オレらはもう知ってますよ」

870 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 08:37:04.49 ID:wS3GMIgw.net]
実際green500で倒してるんだからたいしたものだよ

871 名前:デフォルトの名無しさん [2018/07/10(火) 14:26:10.12 ID:+spxUUiC.net]
https://github.com/saschagrunert/webapp.rs

これいいね、Webアプリを完全Rustで作成

872 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 12:56:28.28 ID:8BQ5VZH8.net]
WebアプリをRustで書くって、どういう需要があるの?
ラズパイみたいな環境?

873 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 13:05:53.98 ID:A6luu057.net]
車買ったらムダにドライブしたくなるじゃん。すぐ飽きるのに。
あんな感じ。

874 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 13:08:35.26 ID:uU0OdRlq.net]
クライアントサイドとサーバサイドで同じコードが使えるって話ちゃうのん?



875 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 13:30:09.56 ID:QvLfDUJ3.net]
同じ言語
だな
それはnode.js環境も同じだが

876 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 13:31:28.26 ID:QvLfDUJ3.net]
期待できる点は速くて安全

877 名前:デフォルトの名無しさん [2018/07/11(水) 16:34:41.89 ID:dzRS/LEU.net]
全部rustって需要はあんまりない気がするけど、サーバ側ならかなりマッチしてる

878 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 17:15:53.86 ID:NEswxD4L.net]
webassebly

879 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:10:54.52 ID:EHDLIx8N.net]
サーバーサイド → Rust
クライアントサイド → Rust
ブラウザ → Rust
完璧じゃないか

880 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:17:02.02 ID:4XcPTXi0.net]
Yewのベンチマークって他に誰か取ってた?

881 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:46:56.99 ID:8BQ5VZH8.net]
やたらノンブロッキングに拘ってるけど、それが本当に必要な人ってごく一部だよね
人気サービスの中の人だけ
普通はスレッド立てまくりで対応可能だし、たまに台数増やすだけで問題ないでしょ?

882 名前:デフォルトの名無しさん [2018/07/11(水) 18:59:32.73 ID:v5sVc8KX.net]
だからそれは並列性が必要ってことでしょ

883 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 19:13:29.64 ID:A6luu057.net]
真のアイルランド人はノンブロッキングなど必要としないwww

884 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 20:14:09.83 ID:IOg1uM7w.net]
アイルランドいつ統一するん?



885 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 20:27:33.26 ID:vXAFXBtg.net]
オライリーの奴予約した

886 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 22:30:46.69 ID:Wlqbcgdb.net]
>>885
白紙の未来を絶望に染めてやろう。

あれもうかなり古いぞ。
rust 2018で今よりさらに変わるんだぞ。
エラーハンドリングもモジュールもTraitも重要な部分全部かわるぞ。
nightlyで結構実装済みだから現行のnightlyですら違うぞ。
macro 2.0はいいぞ!

887 名前:デフォルトの名無しさん [2018/07/12(木) 22:39:04.16 ID:sU95dCXR.net]
この仕事してるならそんなの普通じゃん

888 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 00:41:53.18 ID:MpWeaOSk.net]
>>886
Rust 2018にエラーハンドリングの変更とかあったっけ?
Rust 2018での追加・変更って"module, impl trait, Generators/async/await, macros 2.0, NLL, SIMD"だけじゃなかったっけ?
もしかしてdo catchがstable化されるの?それとも、それ以外で変更があるの?
エラーハンドリングで互換性を崩すような変更があるならかなり痛いんだけど…

889 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 04:40:11.96 ID:7ZPDFHpF.net]
https://github.com/rust-lang/rfcs/blob/master/text/2388-try-expr.md
2018からtryがキーワードとして予約される(catchは廃案)
editionが未完成だと実装できないから2018リリースにはきっと間に合わない

890 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 08:17:48.56 ID:wonLmOyY.net]
RustもC++みたいに何年かおきに大きく変更されるの?

891 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 10:05:43.27 ID:U/mhKMvJ.net]
こないだ1.0になったばかりな気がするんだが。仕事じゃつかえないな

892 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 10:19:59.41 ID:MpWeaOSk.net]
こないだってもう3年前だぞ
C++が仕事で使えるんだから使えるだろ
てか、Swiftなんてもう4でそろそろ5になるとか言ってるんだぞ
あれが仕事で使えるんだからRustなんか楽勝だろ

893 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 10:29:57.41 ID:U/mhKMvJ.net]
swiftなんてappleのDSL

894 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 10:31:39.87 ID:U/mhKMvJ.net]
C99勢が砦



895 名前:デフォルトの名無しさん [2018/07/13(金) 11:07:37.12 ID:sS4PjtpX.net]
実際仕事で使っている人たちがいるのに使えないということは、別のところに問題があるのよ

896 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 11:48:20.64 ID:ERNuP0HI.net]
安定性以前にまともにfibが書けない言語だから仕事じゃ使えない

897 名前:デフォルトの名無しさん [2018/07/13(金) 12:52:21.80 ID:sS4PjtpX.net]
突然の自己紹介

898 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 13:54:10.99 ID:GXltVmCz.net]
>>50辺りの流れは何回見ても本当に秀逸

899 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 15:05:24.82 ID:KpXdroi9.net]
車輪の再発明を抑止し過ぎるとnode.jsみたいになるからね
やり過ぎはだめってことよな

900 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 15:40:42.13 ID:5L9NPjD5.net]
どゆこと?

901 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 16:06:42.44 ID:AcLm8Zma.net]
たかだか一行二行のプログラムのnpmパッケージであふれ、しかも子孫含めた被参照ダウンロードが100万とかざらで、さらにそれがバグっている。

902 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 17:28:42.65 ID:vZnflVWC.net]
Rust関係ないけど最近ArchLinuxのAURに細工されたパッケージが上げられててほんのちょっとだけ話題になったんだけど

正直自分が使うcrateやそれの依存関係まで含めて全部書いてる人が信用できるかとかソースまでチェックしてる人なんていないよね…?
イカンなぁと思いながら盲目的に使っちゃってるわ(´・ω・`)

903 名前:デフォルトの名無しさん [2018/07/13(金) 17:44:54.43 ID:sS4PjtpX.net]
CPUのL2キャッシュを作った人の叔母の恋人がテロリストがどうか気にするところから始めたほうがいいな

904 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 17:46:33.55 ID:U/mhKMvJ.net]
某ファイルシステムの作者が奥さんを殺してしまってな



905 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 18:29:15.55 .net]
怖いなぁ、戸締まりすとこ…

906 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 19:36:34.68 ID:wonLmOyY.net]
そういえばRUSTという殺し合いをするゲームがありますね

907 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 20:34:31.63 ID:Cw5pkNzp.net]
crate以前に詐欺企業Mozillaが信用できないから

908 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 20:59:24.06 ID:IpXdw+4i.net]
Mozillaが詐欺企業なら、Mozilla以上に言う事やる事がコロコロ変わるAppleや
個人情報を収集しまくりのGoogleやMicrosoftはどうなってしまうんだろうなw

909 名前:デフォルトの名無しさん [2018/07/13(金) 21:16:35.53 ID:Y3xd+pZ1.net]
> 仕事じゃ使えない

おじさんのことじゃん

910 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 21:19:05.39 ID:EK55GFqW.net]
crates.ioを見に行かないようにして、社内で確認済みのcrateしか置いてない社内リポジトリだけ
参照するような設定って出来るんだっけ?

911 名前:デフォルトの名無しさん [2018/07/13(金) 21:39:00.40 ID:Y3xd+pZ1.net]
RFCはあるみたいだけどまだ出来ないのかな
https://github.com/rust-lang/rust/issues/44931

912 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 21:50:09.75 ID:EK55GFqW.net]
>>911
まだ半分も済んでないね

913 名前:デフォルトの名無しさん [2018/07/14(土) 00:26:44.88 ID:nZvQhL00.net]
>>910
cargoはそこらへん腐ってるから無理。
出来はするけどcrates.ioをクローンするツールの開発が
殆ど動いてないしクローンしてもそのローカルリポジトリを管理するツールがない。
ここらへんはoffline modeも絡んでくるけど、
どうせ欠陥機能作って廃止してまた作っての繰り返しでめちゃくちゃになるだけ。

914 名前:デフォルトの名無しさん [2018/07/14(土) 06:22:32.24 ID:brBR1uF1.net]
crates.ioのソースを持ってきてローカルに立ち上げてhostsで向ければ出来上がりじゃん



915 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 06:46:24.80 ID:W3qfg8ZM.net]
cargoが便利コマンドすぎて、原始的な事がやりづらくなってる問題

916 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 09:02:37.98 ID:5xFWH4XP.net]
便利っつーかモジュラリティーの低い構造になってるだけだろ。。
バカ設計だわ。

917 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 10:21:42.77 ID:7J+9ARNC.net]
>>909
go使うよ。32bitsマシン以上向けならgoで十分だ。

918 名前:デフォルトの名無しさん [2018/07/14(土) 11:25:26.45 ID:brBR1uF1.net]
仕事じゃ使えないのは言語じゃなくてお前だって言われてるのに何故goが出てくる

919 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 11:57:28.13 ID:7J+9ARNC.net]
Rust使えないから

920 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 14:38:38.90 ID:HNobJoZ0.net]
Rust(が/を)使えないから
どっち

921 名前:デフォルトの名無しさん [2018/07/14(土) 14:41:53.11 ID:6PGIbnJP.net]
にほんごむずかしいあるね

922 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 14:53:02.90 ID:fAbuOpO3.net]
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる

923 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:01:24.24 ID:3YOZASYs.net]
「機械語のレベルと相性が悪い」が "All your base are belong to us" みたいに見えてきた
なんかもう根本的に解ってないなっていう感じからくる面白さがある

924 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:14:29.28 ID:HNobJoZ0.net]
モジラに職を奪われたおじさんと
そのおじさんの物まねをするおじさん達のスレ



925 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:18:04.39 ID:n16W1iUj.net]
LLVMについていけないおじさん

926 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:22:17.69 ID:P7IB+4yp.net]
Cやアセンブラなどの低レベルな処理と連動する場合unsafeを使わざるを得ないが、言語の仕様上普通に書くとunsafe祭りになってしまい
ソースコードの可読性が低下するのが残念。抽象化したくてもこれまた仕様的に完全な抽象化が出来なかったりするし

927 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:47:47.15 ID:7J+9ARNC.net]
gcが有って良いならgo。 ない方が良いならnimってことか

928 名前:デフォルトの名無しさん [2018/07/14(土) 16:00:11.16 ID:6PGIbnJP.net]
まだ学習し始めたばかりでみんなが何を言っているのかよくわからない。

929 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:53:11.51 ID:QBMXvyuq.net]
どいつもこいつも適当なことをそれっぽく言ってるだけだから気にしなくておk

930 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:57:03.73 ID:7J+9ARNC.net]
ここはアンチの溜まり場だよ

931 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:09:58.35 ID:lldWHLOY.net]
今日は本物がいないな

932 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:28:07.35 ID:veV9L5cz.net]
>>927
一体いつからNimにはGCがなくなったんだ…?(困惑)

933 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:41:12.64 ID:/EttrqmU.net]
>>931
狂人の真似をすれば実際狂人
つまりみんな本物のRustに職を奪われたおじさんなんだよ

934 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:45:59.63 ID:h94PG7c/.net]
https://nim-lang.org/docs/gc.html
RustはできないしNimも詳しくない専門性なしのおじさん



935 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 18:18:40.34 ID:yo3MGbyq.net]
お前らもモジカスに親を殺されてみろよ

936 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 20:02:32.48 ID:3YOZASYs.net]
バトー「つまり、本物の "Rustによる被害者" というのは最初の一人だけで、 
    残りは全て模倣犯による狂言だったってのか?」

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

バトー「実在しない "Rustによる被害者" たちが連鎖するってわけか……。
    ── 最初の一人はとうの昔に死んじまってるのにな」

937 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 23:00:52.98 ID:6hFYodEH.net]
>>923
懐かしいなAYBか。文法エラーを直しても通じないのがいいよなw
"All of your bases belong to us."
"お前らの卑しいものすべては我々に首ったけ"
ヒドイw

938 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 23:51:21.23 ID:5xFWH4XP.net]
rustに職を奪われたおじさんなんて実際は存在しないわけだが。。
まあそういう人がいると思った方が幸せな人がいるのは事実。

939 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 00:42:05.31 ID:NkViXM6D.net]
Rustに職を奪われたおじさんなんて名称なんてどうでもよくて
fibも書けない確かな"存在"がぐちぐち居座るせいで幸せになれない

940 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 02:53:02.00 ID:x6haH/8s.net]
良かった。Rustに職を奪われたおじさんは居ないんだ。

941 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:56:41.89 ID:NalVqF46.net]
NLLがstabilizeされたらfibを書けないおじさんもfib書けるようになって成仏できるよ

942 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 11:00:28.92 ID:rsj4GyZ/.net]
>>941
「fibを書けないアホ」が「木構造を書けないアホ」に変わるだけと予想

943 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 14:08:56.51 ID:Um7D2OLN.net]
rustでfibが書けたり、木構造が書けることをここまで自慢してくる輩って。。

944 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 15:31:20.30 ID:rsj4GyZ/.net]
自慢も何もプログラマを名乗るなら最低限それくらい書けて当然だろ?ってこと
例えば、「俺は数学者だ」とか言ってる奴が微積分すら理解出来てなくて
「でも、因数分解ならできるし」とか言ってたら全力でぶっ叩くだろ?
つまりは程度の問題ってわけ
そして俺はRustでfibや木構造すら書けない奴はどうせ他の言語使ったって
ろくなコード書いてないだろうからそんな奴がプログラマを名乗るなんて片腹痛いわ!と思ってるだけ



945 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 15:42:24.47 ID:ppRXQOVy.net]
このスレに迷い込んだ新規にはfibをどんな書き方をしたらrustで問題になるのか想像もつかない

946 名前:デフォルトの名無しさん [2018/07/15(日) 17:23:07.93 ID:upVjqm6g.net]
fibってなんですか?

947 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 17:23:57.93 ID:vPMHyt9R.net]
>56でしょ?
fibがかけなくて5時間も喚いた挙げ句
答えを大量に示されても礼のひとつも言えない
下らない批評をしては論破されて潜伏を繰り返しているあほ
「rustに職を奪われた」「fibを書けない」もこいつの本質ではないんだよな

948 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 17:58:08.24 ID:f+8P4DFr.net]
ここはネタスレなんで

949 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 19:36:55.02 ID:YZYcatpB.net]
>>56もそもそも拾い物みたいだしなぁ…… (検索に引っ掛かる

950 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 19:51:13.58 ID:H2FcMtiY.net]
ツイッターでrust-lang-ja.orgのドメインが〜みたいな話が先月からあるみたいだけど
このスレでは誰も話題にしてない?

951 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:03:03.01 ID:NalVqF46.net]
fib拾いものなのか
正しくないfibすら書けないおじさんだったか

952 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:56:16.71 ID:vPMHyt9R.net]
https://www.google.co.jp/search?q=%E2%80%9Ca352230e08bc0a76fb5f116bd3c7abf4%E2%80%9C


>>950
検索にも引っ掛からないし誰が困るんだろう

953 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 21:35:06.48 ID:YZYcatpB.net]
>>950
Slackでは話題に出てたけど ここでは出てないかな

>>952
流石にplaygroundには貼ったんでしょうね コード4行目で検索

954 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 21:45:35.35 ID:rsj4GyZ/.net]
>>953
ほんとだ4行目だけを直接検索したら出た
しかも解決法までご丁寧に解説してあった
>>56はそれも読まなかったのか…
はたまた、読んでも理解できなかったのか…



955 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 16:06:24.68 ID:NRqWPJmE.net]
推察するに日本語が読めなくて、「できない」だけで飛び付いたんだろうなあ
こんな奴でもC++は書ける(自称)って辺りが日本のプログラマの闇だな

956 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 16:24:01.28 .net]
軽々しくC++書けるなんて口にしようものなら茂みからマサカリが飛んでくるぞ

957 名前: mailto:sage [2018/07/16(月) 16:41:06.37 ID:PLRcL5uS.net]
C/C++ については、いつまでたっても「書ける」とはいいきれない存在ですね…
仕様が結構複雑だからなのか?

958 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 18:39:02.08 ID:NeMQsq8I.net]
Rustは「書ける」んですか?

959 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 18:52:42.01 ID:tJPrOapS.net]
Go使うよ。

960 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:02:04.84 ID:+TKchfUN.net]
perlがライトオンリー言語なんて言われていたけどリードオンリー言語なんてのもあるんだな。
wiki.c2.com/?ReadOnlyLanguage

rustはノミネートされてないから「書ける」と思うよ(すっとぼけ

961 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:32:53.55 ID:PkmPgg8A.net]
確かにAppleScriptは中途半端に英文風で多彩かつ何でこれダメなのってパターンも多くread onlyに相応しいな
昔はAdaの称号だったと思うが

962 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 01:20:02.37 ID:XTfqg8Os.net]
Eclipse Corrosion使ってるやついないの?

963 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:18:59.26 ID:6WNc4gpj.net]
Rustでプラグイン機構を持ったアプリを作る場合、本体とプラグインでjsonでやり取りするのが無難?
それとも動的リンクでいける?

964 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 00:12:51.84 ID:t7f2tjaz.net]
jsonでどうやるんだ。
ttps://crates.io/crates/libloading



965 名前:デフォルトの名無しさん [2018/07/23(月) 00:44:55.55 ID:CBB4e6ta.net]
それOSやRustコンパイラがどういうコード作るかによるのでは?
なんとなく出来そうな気はするけど。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef