Rust Part5

1デフォルトの名無しさん2018/02/11(日) 20:07:24.54ID:ri7dLd1B

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

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では

新着レスの表示
レスを投稿する