Rust Part6

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/07/28(土) 03:04:38.63ID:kAX50nYD
Mozilla発のRust言語のスレ

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

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

前スレ
Rust Part5
http://mevius.5ch.net/test/read.cgi/tech/1518347244/
2018/09/17(月) 00:20:05.94ID:XaZEKwwx
>>251
そんな話してない
2018/09/17(月) 20:15:25.23ID:aiBl5TGk
ここで質問しても許されるのでしょうか?ダメそうなら、申し訳ないです。
S式を使って遊ぼうとしてRustで見様見真似で書こうとしたんですが、コンパイルすらできません…。
ヘッタクソなコードで恐縮ですが、以下の52行目で「`s` does not live long enough」と怒られます。
https://pastebin.com/94ZPh2dL

まず、's'がスタックに確保されていて、parseから返った先で(つまり、スタックが解放されたあとで)
sを使う可能性があるから駄目だと言っているという認識ですが、正しいのでしょうか。
また、どのように対処すればよろしいでしょうか。

たぶん、根本的なところから理解できていないのだと思いますが、ご教授お願いいたします。
254デフォルトの名無しさん
垢版 |
2018/09/17(月) 22:18:18.83ID:faCDAGdL
Nodeがsへの参照を持っているのにsが解放されちゃうからじゃないかなあ
255デフォルトの名無しさん
垢版 |
2018/09/17(月) 22:22:00.90ID:faCDAGdL
みたかんじsymbolを&strじゃなくてStringにしてsをmoveさせればよいと思うけど
2018/09/17(月) 23:12:20.37ID:vky9u9CI
>>253
>sを使う可能性があるから駄目だと言っているという認識ですが、正しいのでしょうか。
合ってる。
sはparse関数の中で確保されてる。
そのsの借用(as_strしてるから借用することになる)をparse関数の外に出そうとしてるから
sの借用がsより長命になるのでrustではエラーになる。
sはparse関数の呼び出しが終わると解放されるからこれはダングリングポインタだよね。

>また、どのように対処すればよろしいでしょうか。
この場合、Node<'a>は文字列のsymbolフィールドを所有する側だから&strじゃなくてStringにすればいい。
apiの設計の時点でownd valueとborrowed valueを意識すればいい。
あとleftとrightが借用になってて、これはこれで設計的に間違いじゃないんだけど問題出るかも。
2018/09/18(火) 22:40:54.20ID:1KtNrcTb
コピーのコストが嫌だからとりあえず参照にしとこう、の精神は早々に破綻するよね
似たようなパーサ書いてて同じようにコンパイラにボロクソに言われたことがある

それ以来、このデータは誰が持っているべきなのか?を意識して書くようにして、
コンパイラに怒られたら「何か抜け道がきっとある」って思うようになれたし、リファレンス探すと大体解決するようになったよ
258デフォルトの名無しさん
垢版 |
2018/09/19(水) 11:41:33.60ID:PupZqwJJ
The Creator
2018/09/20(木) 01:17:05.56ID:U3x/57bG
皆さん、お返事ありがとうございます。
とても参考になります。
もう少し、頑張ってみます。

# ピンポイントで質問できるのは、本当にありがたいです。
260235
垢版 |
2018/09/21(金) 16:03:14.74ID:orU60ay9
ありがとう。File Structuresを眺めていますが英語なのであまりはかどらないです
二分木およびその発展系の説明は十中八九キーとして数字が使われているけど
ファイルシステムの入力はファイルパスであり可変長の文字列。この部分はどう埋めればいいのだろうか
ハッシュテーブルでも使えという話なのか?しかしそれならハッシュテーブルを使ってファイルのメタデータを
探索してしまった方が早そうだけどそういう問題ではないんだろうな
2018/09/21(金) 21:05:15.62ID:8EH2XxrU
最近でたオライリーの本って
Rust公式ドキュメントの2018でもSecond Editionでもなく
明らかに初版が元になってるよね時期的に
2018/09/21(金) 21:54:00.31ID:QjgEKJ4o
>>260
ブロック管理に使うからキーは数字で問題ない
2018/09/22(土) 11:42:21.78ID:wuQrrLSf
>>261
つまりオライリーの本は地雷?
2018/09/22(土) 12:08:43.13ID:avc67xv+
Second Edition出てるんだっけ?
ググってみても First Edition, Third Release が 2018-6-22 としか見つからないんだけど。
2018/09/22(土) 12:28:30.62ID:zH/ripxa
目次の構成はSecondに近いか?

サンプルプログラムの発行時期は10ヶ月前だからそんなに古くはないのかもな

オライリー原書
http://shop.oreilly.com/product/0636920040385.do
公式ドキュメント日本語訳
https://doc.rust-jp.rs/

ちな最新の2018版ってGithubみた感じリアルタイムに更新されてるっぽいな
https://doc.rust-lang.org/book/index.html
266235
垢版 |
2018/09/22(土) 12:29:23.44ID:+vE2oHEK
>>262
ありがとう。あれ?自分が勘違いしているのかな
B+木やB*木をファイルのメタデータの探索に使っていると思っていたけどそうではなくデータを格納しているブロックの探索に使っているということ?
2018/09/22(土) 13:25:51.18ID:avc67xv+
翻訳元のISBNと原書3rd releaseのISBNが違うことは確認したけど、たぶんこのerrataに載ってる修正くらいだろう。
https://www.oreilly.com/catalog/errata.csp?isbn=9781491927212
2018/09/22(土) 23:23:20.56ID:c8wHmvAd
>>261,265
オライリーのカニ本の初版一版は1.17.0。TRPLの日本語訳は相当古い。
2018はverでいうと1.31.0に相当する。いまのstabuleは1.29.0。
それにTRPLでもまだ文書化されてない機能あるしな。
非初学者向けならStep Ahead with Rustもある。
2018/09/23(日) 00:32:53.25ID:v7lwqtna
6週間で0.1バージョン上がるから一年半前のバージョンか
進化はえーな
2018/09/24(月) 14:27:54.43ID:98z19Ykt
>>266
> ファイルシステムの入力はファイルパスであり可変長の文字列
ファイルシステムへの入力は inode、dir、dentry がほとんどじゃないか?
create:dir と dentry をキーにinode作成
readdir:dir をキーに dirent を作成
open:inode をキーに open
ext4 を少し読んだ感じこうだった
inode 番号をキーに管理すればよいのでは?
271デフォルトの名無しさん
垢版 |
2018/10/08(月) 18:00:08.98ID:QFhDw4cQ
https://play.rust-lang.org/?gist=d668e212c4d0abf7d0e9fd4c76ea4a56&;version=stable&mode=debug&edition=2015

これどうしたらいい?
2018/10/08(月) 18:41:33.75ID:tthsf3cJ
>>271
これってたぶん自己参照構造体(self-referential struct)の話だよね?
自己参照構造体は未定義動作の危険性があるので現状のRustでは表現できない
詳しくは↓の「自己参照構造体」のところを読んで
ttps://qiita.com/ubnt_intrepid/items/df70da960b21b222d0ad
273デフォルトの名無しさん
垢版 |
2018/10/08(月) 18:44:43.33ID:3nZaN/dO
RC使うが正解
2018/10/08(月) 21:00:25.91ID:tthsf3cJ
>>273
>>271の場合だとRc使っても無理な気がするんだけど…
ソースコード見せて
2018/10/09(火) 01:15:58.85ID:C4dQJ/Ib
>>271
>>272と同意見だけど27行目でどうやっても自分の参照を関数外に出すから無理だな。
借用じゃなくてBoxでもってクローンすればよくね?
276デフォルトの名無しさん
垢版 |
2018/10/09(火) 02:03:50.07ID:ErN4eNsC
タプルにFromStrトレイトを実装するのって無理なんですか?

https://ideone.com/iNMuPL
2018/10/13(土) 02:22:04.65ID:6mWkEB0Z
implしたい型か、traitのどっちかが自分のものでないと駄目って制約があるから駄目です
何でこんな制約があるかは理解してないけど
2018/10/14(日) 00:02:45.49ID:mv7/qGuI
open等させるものか!っていう強い意志。new type patterns使え。
279デフォルトの名無しさん
垢版 |
2018/10/23(火) 00:25:24.72ID:vm0fIWWq
Rustに関しての発信の多い日本人のツイッターアカウントを何人か教えて
フォローしてRustの情報集めたい
2018/10/23(火) 07:44:49.73ID:TD4ftrwf
普通に検索すりゃいいじゃん
281デフォルトの名無しさん
垢版 |
2018/10/24(水) 01:23:57.63ID:fDSh/sYg
言い方を変える
オススメの情報発信者を教えて!
2018/10/24(水) 03:09:14.03ID:Ra+MYJIp
お前がなるんだよ!
2018/10/24(水) 12:04:16.29ID:Sg0ufq4y
ここの人々
https://www.rust-lang.org/ja-JP/team.html
284デフォルトの名無しさん
垢版 |
2018/10/24(水) 13:59:42.33ID:k2aW8IHE
人でないのも混ざってるようだが・・・
2018/10/24(水) 15:20:24.92ID:V7Jy5BkX
rustの懐は深い
2018/10/24(水) 15:24:14.56ID:htH2RJ/p
この写真のことかな
https://avatars3.githubusercontent.com/u/26415?s=400&;v=4
2018/10/25(木) 23:59:22.23ID:lH0yd+Cf
rustlang の Discord に Rust(Steam) をクレクレしてるのが出現してる
さすがにベタすぎるのでネタかと思ったけど
「Rust言語は誰にでもフリーだよ!」と住人にやさしく説明されててちょっと笑った
そういう仕込みのフリとオチだったのかもしれないが
2018/10/26(金) 17:03:37.34ID:debQKEDn
Rust信者ってブロッキングにも賛成なんだろうなあ
邪悪だ
2018/10/26(金) 20:14:23.65ID:113CY38k
そうなん?俺もブロッキング支持しよ〜
2018/10/26(金) 20:17:42.39ID:44ub/T/P
async/awaitのあたりがきれいに書けないなら、ブロッキング+スレッドの方が実用的でしょ
2018/10/26(金) 20:54:37.31ID:UNNCnGfy
いやいやがんばってノンブロッキング対応してるでしょ
2018/10/26(金) 23:30:24.99ID:xFXCmb25
同音異語のボケをマジレスされる>>288が不憫。
2018/10/28(日) 03:48:19.07ID:tRSd44wH
1.30出た
2018/10/29(月) 12:25:08.61ID:LvhYoyxI
モジラがバックにいてカワンゴが布教してる技術なんてよく使う気になるよなお前ら
295デフォルトの名無しさん
垢版 |
2018/10/29(月) 13:12:48.10ID:PHNS982/
>>294
じゃあ君がバックに付け
2018/10/29(月) 21:15:34.41ID:UJ6dBI7/
>>295
やだよ放射性廃棄物の後処理すんの
世に出して広めた奴が責任もって片付けろよ
297デフォルトの名無しさん
垢版 |
2018/10/29(月) 21:26:30.74ID:e16+m1gN
rustのポジションは他に居ないからありがたく使ってますけど
2018/10/29(月) 22:03:30.02ID:M3jiQuOm
>>294
じゃあ、かの有名なMicrosoftがRustを使っていれば貴方も使う気になるってわけですね
ttps://www.reddit.com/r/rust/comments/8ub964/microsoft_announces_using_rust_to_build_some_of/
はい。これでめでたしめでたし

ところで、ドワンゴが例のRust製分散システムをオープンソースにしてた。
ttps://dwango.github.io/articles/frugalos/
299デフォルトの名無しさん
垢版 |
2018/10/30(火) 13:57:30.60ID:XfhSBW4w
>>296
じゃあ君は最初はバックがどうこう言ってたけど実はそんなこととは無関係に嫌ということかな?
2018/10/30(火) 23:04:19.32ID:g5GFfrA6
ただの廃棄物じゃなくて放射性廃棄物ってどういう比喩なのか
阿片みたいに観戦力があり周囲に広がるということ?
それとも単に処分に困るというだけ?
301デフォルトの名無しさん
垢版 |
2018/10/31(水) 06:32:37.92ID:DCSkWbH/
バカが扱うと光ってしぬとか?
2018/10/31(水) 08:29:16.12ID:OC34mqIr
モジラの由来がゴジラだからだろ
303デフォルトの名無しさん
垢版 |
2018/10/31(水) 14:18:23.60ID:umCB7ism
遠回しすぎ
2018/11/08(木) 21:50:52.93ID:OLKb17KH
暗号通貨関連でよくRustが使われてるってホントなの?
2018/11/08(木) 23:09:14.23ID:g1taMrfK
>>304
残念ながらC++, Java, Goと比べたらゴミカスや
2018/11/14(水) 12:05:28.30ID:KF+gaYe3
家の非力なデスクトップにgentooを入れたんですが
firefoxをコンパイルしたらrustもコンパイルしてくれました
rustも含めて都合14時間かけてコンパイルしたfirefoxを使うだけじゃ勿体無いので
rustを勉強してみようと思ったのですが
スクリプト言語とjavaを触った程度の人が始めるには
ハードルが高い言語なんでしょうか?

何かとっかかりになる良いサイトとか本がありましたら
教えてくれると嬉しいです
Python歴7年Java歴2年の趣味プログラマです
rustでgtkアプリを作ってみたいです
307デフォルトの名無しさん
垢版 |
2018/11/14(水) 12:11:11.98ID:zVp4oIsl
問題はやるかやらないかだけ
308デフォルトの名無しさん
垢版 |
2018/11/14(水) 12:13:35.40ID:q4FWtiky
【おい何だこれ、俺ムカついて】 久本雅美、マチャミに、創価学会に入れって、俺ね囲まれたんですよね
http://rosie.5ch.net/test/read.cgi/liveplus/1541989783/l50
2018/11/14(水) 12:18:27.60ID:KF+gaYe3
ヤル気はマンマンなんですが
まだgentooのインストール途中でxfceにfirefoxが入ってるだけなんですよね
帰宅したらvscodeも入ってるはずなので今夜からコンパイル流しながら勉強する予定です

ただ、あんまり初心者向けの日本語情報が見当たらない気がするので
いいサイトがあれば知りたいな、と思った次第です
2018/11/14(水) 17:33:29.52ID:DKDZkQDw
私もRustでGtkアプリ作りたいマンです
2018/11/14(水) 17:36:38.51ID:n7YO6e8G
Qtがいいです(´・ω・`)
2018/11/14(水) 17:58:38.03ID:nBV8bj0A
Azulとかどうよ
とりあえずサンプルビルドしたら普通に起動した
313デフォルトの名無しさん
垢版 |
2018/11/14(水) 19:37:11.25ID:TV7+R4Em
とりあえずslackに入ってみるとよい
2018/11/14(水) 21:37:35.14ID:KF+gaYe3
皆さんいろいろとありがとうございます
とりあえずプログラミング言語Rustの日本語訳pdfを見つけたので
それ見て勉強してみたいと思います

これ凄いですね
無料で配布しちゃって良いんでしょうか
下手なwebの情報探すより公式見たほうが良さそうですね
315デフォルトの名無しさん
垢版 |
2018/11/15(木) 09:47:28.34ID:RDhHOc3n
布教のために気合い入れて書いたんだろうと思う
2018/11/15(木) 10:31:34.27ID:P9aoBmqQ
Gitとは何かの説明まであって驚くよな
さすがにそのレベルの人は門前払いしたほうがその人のためにもいいと思うが
2018/11/15(木) 12:47:26.17ID:5HuarfG4
>>316
あれはRust初心者だけでなくプログラミング初心者も対象としてるんじゃないの?
だから初歩的なところから教えてるんだろうと思っていたが

まぁ、プログラミング初心者がいきなりRustから始めるってどうなのよ?とは思うけど
2018/11/15(木) 13:04:35.26ID:zAJKMl9m
Cとかでメモリの扱いミスってしかも落ちずにおかしな動作する、みたいなのの経験がないとイマイチRustの有り難みは感じられないようなとも思いつつ
かといってRustのためにC勉強するってのもなんか本末転倒なきもするし
319デフォルトの名無しさん
垢版 |
2018/11/15(木) 14:42:52.86ID:rLd4aKr0
なまじ他言語を知ってるから難しいという点もあるんじゃない
初心者がベテランが作るようなものをrustで書くのは辛いだろうけど、初心者が作るようなものを書く分にはむしろ易しい気がする
セットアップ楽だし
2018/11/15(木) 22:55:30.82ID:9llOcmgi
Mozillaはドキュメント書くの得意だよな
オワコンブラウザには勿体無さすぎる才能
321デフォルトの名無しさん
垢版 |
2018/11/16(金) 12:21:53.69ID:4Z/2Zn+l
なぁに、まだまだこれから。

などという言葉が出始めたら終わりは近い。
2018/11/18(日) 19:34:31.05ID:R8KfbBfe
書店でオライリーのRust本をパラパラと読んでみたけど
式の可読性の面ではC++の悪いところを引きずってるように思える
2018/11/18(日) 20:15:20.02ID:4iL5+9nq
>>322
どの辺が?
2018/11/19(月) 19:32:18.74ID:2BxYw1Po
可読性って言うやつw
2018/11/19(月) 22:01:51.59ID:Eani9PxJ
try!(try!(try!(foo).bar()).baz()) とか?
2018/11/19(月) 22:24:14.39ID:a77oxEQZ
try!(try!(try!(try!(foo).bar()).baz()) とか)
2018/11/20(火) 03:45:46.85ID:NpnvZOTV
?演算子使えよ
2018/11/20(火) 03:48:40.78ID:QYgW0U1d
オライリーのRust本は?登場以前なの?
2018/11/21(水) 18:56:13.38ID:b35PMmU2
前なの
2018/11/21(水) 20:13:11.42ID:X08G4m76
え?前なの?
手元の蟹本だと、
7.2.4節 エラーの伝搬に"?演算子"のこと書かれてるんだけど
331デフォルトの名無しさん
垢版 |
2018/11/27(火) 22:10:26.76ID:o0QT5paZ
muslでビルドすると普通にlinuxでビルドしたときよりメモリ食うんだけどなんで?
2018/11/29(木) 02:19:25.76ID:lxH8UY8f
>>331
標準のライブラリだと、メモリ上にロード済みのコードを共有するからじゃないの?
333デフォルトの名無しさん
垢版 |
2018/11/29(木) 07:51:18.34ID:XVJlfR1h
libcとかがダイナミックリンクじゃない分てことだよな
色々検証していたんだがそれだけじゃなくリークしてるように見える
2018/11/29(木) 11:32:12.22ID:F/HxRyq9
>>318
だがそれが一番の近道だよ。
結局 c -> c++ -> rust の順で学ばないと意味わからんだろう。
2018/11/29(木) 13:15:45.28ID:lxH8UY8f
>>333
valgrindで見たら?
2018/11/30(金) 01:14:27.01ID:CtIYhRiq
>>334
いやCはともかく少なくともC++は要らんだろ
337デフォルトの名無しさん
垢版 |
2018/11/30(金) 14:18:46.51ID:2aRM++fj
>>335
見てみたらリークはしてなかった
100mbくらいあるヒープに確保された値を1分に1度入れ替えているんだけど、ヒープに確保された領域って即解放されるわけではない?
338デフォルトの名無しさん
垢版 |
2018/11/30(金) 20:37:37.40ID:9byeocZC
アロケータがmallocになってるからっぽい
2018/11/30(金) 23:14:23.14ID:yJ65pEge
あれjemallocやめたの?
340デフォルトの名無しさん
垢版 |
2018/11/30(金) 23:51:57.68ID:9byeocZC
まだjemllocがデフォルトだけどナイトリーでは既に外されていて近々デフォルトではなくなる

それとは別の話で、俺がビルドしたのがmuslビルド用のdockerイメージで、それにはjemalloc入ってないからシステムアロケータで動いてたんだよね
2018/12/07(金) 19:20:14.13ID:gVw6+TJP
Announcing Rust 1.31 and Rust 2018

https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html
342デフォルトの名無しさん
垢版 |
2018/12/08(土) 03:04:47.62ID:pvPlWHOH
過疎ってるのは人気廃れたかrust
343デフォルトの名無しさん
垢版 |
2018/12/08(土) 05:33:59.34ID:YCd49h5/
2018安定化でむしろ盛り上がっているのでわ
うちはリプレイス案件2つにrust使うことにした
2018/12/08(土) 19:15:08.95ID:6H7niR8Q
>>343
何系?Web?
345デフォルトの名無しさん
垢版 |
2018/12/08(土) 20:54:29.25ID:YCd49h5/
んだ、webだ
346デフォルトの名無しさん
垢版 |
2018/12/08(土) 21:39:48.43ID:NPyhS6xn
なんかサイトの雰囲気がらっとかわったな。
347デフォルトの名無しさん
垢版 |
2018/12/08(土) 21:53:08.41ID:tBodI9MC
まともなヤツなら将来が保証されない言語なんかを採用しないからな
一時的に使用するドカタ向け案件なら試用にぴったり

まとも思考してたら、将来も間違いなく保証されてるc/c++を使う
2018/12/08(土) 22:27:03.66ID:tDQL8bNL
FacebookやDropboxが採用してるし
最近だとAmazonがRustでVMMを作ってる
2018/12/08(土) 23:02:19.67ID:StthUKB3
>>348
Facebook採用してたっけ?あそこはDだったような…
MSの間違いじゃない?MSだったらAzureの中の一部で採用してたはず…
因みにGoogleも自社製エディタに(たぶん20%ルールでだけど)採用してるね
もしFacebookも採用してるならApple以外の主要IT企業は全て採用してることになるな
(AppleはObjectiveC/C++とSwiftしか使わないしね…)
2018/12/08(土) 23:48:17.93ID:6+mjNqXv
まあクソアプリほどどの言語で書いたかとかアピールするよね。
2018/12/08(土) 23:52:33.64ID:lASXqBfj
クソアプリほどオープンソース?
■ このスレッドは過去ログ倉庫に格納されています