プログラミング言語 Rust 3at TECH
プログラミング言語 Rust 3 - 暇つぶし2ch262:デフォルトの名無しさん
17/07/06 20:30:03.81 kH42VxHy.net
最近の公式の動きを見ていると、WebフレームワークはRocketを推していく方針に見えるな

263:デフォルトの名無しさん
17/07/07 07:02:47.03 vPLSgrbk.net
>>257
何でよりによってnightlyを要求するRocketなん?

264:デフォルトの名無しさん
17/07/10 13:13:29.86 Y8I/wQdo.net
>>256
タスク数に合わせてO(n)になってると思うんだけどそれは度外視なのかな?

265:デフォルトの名無しさん
17/07/10 13:58:50.67 mQ3pGq+a.net
オラクルがrustでコンテナランタイム作っとるってよ

266:デフォルトの名無しさん
17/07/10 19:18:17.66 l6mkv8ve.net
Building a Container Runtime in Rust | Oracle Developers Blog
URLリンク(blogs.oracle.com)
> almost all container utilities are in c or go.
> (中略)
> Rust sits at a perfect intersection of these two languages

267:デフォルトの名無しさん
17/07/11 13:53:59.15 5tKo2E+W.net
オラクルの時点でお察し案件じゃん
まあオラクルとモジラは業界のゴロ同士仲がよろしいんですなあ

268:デフォルトの名無しさん
17/07/14 04:46:26.78 TKiI+WcD.net
google という名前のcrateが上がってて、
説明文が "Google is evil"
バージョン番号が "6.6.6"

269:デフォルトの名無しさん
17/07/14 20:21:33.28 8a1VCaPH.net
Googleが悪とかやっぱモジカスだわ

270:デフォルトの名無しさん
17/07/15 17:00:03.78 U+uVxSdX.net
Rust公式がTwitterで"Rocketの新バージョンがリリースされたぜ"とか呟いてて、それに対して"Ironの何が悪いんだ"的なクソリプが付いてるの笑う

271:デフォルトの名無しさん
17/07/15 23:27:50.25 RjDGp9te.net
RustのSlackでmame氏にCでポインタとか触ったことありますか?って聞いてるやついてワロタ

272:デフォルトの名無しさん
17/07/16 13:32:06.66 FJgd8SG/.net
箸が転がったから笑った

273:デフォルトの名無しさん
17/07/16 13:33:12.21 JEFmdVs4.net
膝がワロタ

274:デフォルトの名無しさん
17/07/17 22:50:00.44 8lRCTnOP.net
関連型ってさなんでいるの?
CeylonやC#みたいにgenericsのin/outで実現できない?

275:デフォルトの名無しさん
17/07/18 13:42:50.01 NOYbJ+oD.net
>>261
ライブラリの問題とかそういう回避方法はないのかと考察したけど、goroutineの仕様上無理ぽって結論なのか
rustが最適な言語かどうかは懐疑的だけど、go以外の使える新興言語ってのは他にないし仕方ないのかねぇ

276:デフォルトの名無しさん
17/07/19 19:13:52.48 23uwxygM.net
>>269 in/outの方が劇的に良かったりするの?MSDNとか読んでもすぐに理解できなかった

277:デフォルトの名無しさん
17/07/19 22:47:17.03 UyJFKTdP.net
>>271
良くなったりするわけじゃなくて全く同じもの。
単にrustのジェネリックスに制限があるだけ。
in/outや+/-なのはjavaの境界ワイルドカード型の定義が
長いから短くなったものでキーワードにするかシギルにするかの好みの違い。

278:デフォルトの名無しさん
17/07/20 00:56:51.60 k7oT/owf.net
C#とか知らないから適当なことを言うけど、in/outって要は型パラメータの反/共変性を指定する構文ってこと?
Rustはクラスがないからあまり関係ないような気が
そもそも関連型と型パラメータは全く別物だし

279:デフォルトの名無しさん
17/07/21 01:30:42.74.net
Announcing Rust 1.19 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)
・C互換な(untagged) unionの導入
・loopのbreakで値を返せるようになった
・値をキャプチャしないクロージャを関数ポインタ(impl Fnでなくてfn型)として扱えるようになった

280:デフォルトの名無しさん
17/07/21 03:20:29.74.net
新しい言語は早い段階から使い始めれば
バージョンアップ時は変更点だけ覚えればいいけど
バージョンアップが重なったあとから始めようとすると覚えることいっぱいすぎ
Rustよ
もっとシンプルに

281:デフォルトの名無しさん
17/07/21 08:32:20.79.net
-Zオプションが時報に無視されててワロタ

282:デフォルトの名無しさん
17/07/21 12:38:58.44.net
Cargoがhigh level過ぎでrustcがlow level過ぎな課題はいつ解決するんかな
他のビルドツールを使ったプロジェクトにrustを入れるのが今は面倒

283:デフォルトの名無しさん
17/07/21 19:27:14.18 juJaC8N3.net
ていうか時報の反応速度が高くて笑う
まさかリリースの度に待機してるのか?

284:デフォルトの名無しさん
17/07/22 07:37:27.49 m9up21PD.net
> ・loopのbreakで値を返せるようになった
遂に来たか。

285:デフォルトの名無しさん
17/07/22 14:32:40.69 IwEFmDCG.net
時報であることに使命を感じて全力待機してそう, 機械の鑑だよホント

286:デフォルトの名無しさん
17/07/22 16:14:42.22 Jfa6LaZA.net
誉め言葉として受け取っておく

287:デフォルトの名無しさん
17/07/22 16:20:13.34 rGyFmqNE.net
>>281
誰だお前

288:デフォルトの名無しさん
17/07/22 16:39:57.41 WZvf35Ul.net
なお、バグった機械の模様

289:デフォルトの名無しさん
17/07/22 17:02:38.46 vk3cyWgj.net
雑談の種になるよう頑張ってるんだよ、そんなあげつらうことないでしょ

290:デフォルトの名無しさん
17/07/22 17:04:33.13 vk3cyWgj.net
というかどこに行けばRustの話をしていいのか分からない。英語ならRedditがあるけど

291:デフォルトの名無しさん
17/07/22 17:05:27.55 lf8sQzDC.net
あれ、associated constsはstabilizeされたんじゃなかったのか

292:デフォルトの名無しさん
17/07/22 17:10:48.08 rGyFmqNE.net
>>286
現行のbetaではfeature gateが外れているから次のstableに乗るはず

293:デフォルトの名無しさん
17/07/22 17:42:07.41 Oi7t7NSG.net
rust-jpのSlackとか?
ところでLLしか触ったことなかった俺も最近Rust使い始めてみたんだけど、有識者から見てRustで1番理解が大変なの(あるいは抑えておかなきゃならないとこ…)はどのあたりなのか教えて欲しい。

294:デフォルトの名無しさん
17/07/22 18:20:40.76 RlMkEmCd.net
>>288
トレイト
ムーブ
参照(borrowing)
Javaも触ったことないならトレイトは最初難しそう

295:デフォルトの名無しさん
17/07/22 20:18:18.76 s9rnd8yr.net
slackの質問に対するリアクションありすぎてこわい

296:デフォルトの名無しさん
17/07/22 20:29:54.52 Oi7t7NSG.net
>>289
ありがとう
公式のチュートリアルみたいなやつ進めてるんだけど今のところトレイトオブジェクトらへんでちょっと理解に苦しんでる

297:デフォルトの名無しさん
17/07/24 12:10:36.01 1TXRI9Gx.net
rustって現場で使われ始めてるの?
メモリ管理周りのメンタルモデルって他の言語に応用利いたりする?
コードがきれいになるとか?
始めるモチベが欲しい。

298:デフォルトの名無しさん
17/07/24 12:28:38.82 zGGIqffP.net
C++ほど辛くない

299:デフォルトの名無しさん
17/07/24 14:12:02.33 K7WDOtB+.net
>>292
1.クソコードをコンパイルさせてくれない
2.コンパイル通すの少し大変だけど実行時エラーが本当に出ない
3. 速い
4.パッケージマネージャーがよくできてる
1は本当に大きくて、自分のコードとコンパイラが喧嘩になると大抵自分のアーキテクチャが悪く、直すとちゃんと正しい実装になって感動する。つまり正しいコードが書けるようになる

300:デフォルトの名無しさん
17/07/24 14:19:11.38 1TXRI9Gx.net
>>294
もう一つ。仕事で使ってたりする?
goのcliツールはよく見るんだけど
rust製って何が有名なのかね?
ブラウザ以外で

301:デフォルトの名無しさん
17/07/24 16:50:51.12 emVJufwa.net
仕事で使ってるかは別としてcliツールは作りやすい印象

302:デフォルトの名無しさん
17/07/24 17:05:29.37 gGn38L0V.net
ripgrepしか紹介できないんだがなんかないのか

303:デフォルトの名無しさん
17/07/24 17:19:06.22 5AMOakOe.net
redoxosのシェルやエディタはunix用としてもビルドできるし
有名かは別として

304:デフォルトの名無しさん
17/07/24 18:24:11.57 v7SfrUaR.net
ripgrepはもちろんだが、tokeiも便利だよ
ion-shellもよく出来てる

305:デフォルトの名無しさん
17/07/24 18:47:46.45 xH7iVUfu.net
URLリンク(github.com)

306:デフォルトの名無しさん
17/07/24 19:32:19.52 TrXPl61y.net
tokei のレポジトリにある使用例
URLリンク(asciinema.org)
を見てみたら、F* と Ur/Web がカウントされていたので「あっ(察し」事案だった

307:デフォルトの名無しさん
17/07/24 23:36:39.90 mh/Tz+0K.net
確かにcliは書きやすくて社内で使ってるサポートツール類はほとんどRust製。
小さいツールだと関係者も少なくて説得しやすいし。
URLリンク(www.rust-lang.org)
こことか見ててもそういうパターンが多いように見える。
さすがに大規模なプロダクションコードをいきなり
置き換えとか無理だろうし。

308:デフォルトの名無しさん
17/07/24 23:43:54.02 Dtg+FNV7.net
Rustである旨味なさそうだけど学習用?

309:デフォルトの名無しさん
17/07/25 06:07:27.53 5XPEt11J.net
おお、色々情報ありがとう。
今のところgoのcliツールのほうが目立ってるのは、単純に1.0のリリース時期の違いによるものなのかな。

redox は気になるなー。rustのメモリ管理の仕組みからいってバグが少ないosになるのかな。ちょっと試してみたいかも。reduxと名前が似てるのがなんかやだけど

310:デフォルトの名無しさん
17/07/25 10:59:30.41 ULTUdplU.net
goのツールをパクって速いのを作ればいいのか?
goのツールは何があるの?

311:デフォルトの名無しさん
17/07/25 11:37:29.68 5XPEt11J.net
俺が知ってるのは
peco、ghq 辺りかな。
ghqは常用してるけど最近重くなってきてるからぜひrustで軽くなるならして欲しい。
多分gitにアクセスしてる部分がボトルネックな気がするけど。

312:デフォルトの名無しさん
17/07/25 11:45:28.60 5XPEt11J.net
あとgitをrustで書き直したらはやくなるとかないかね。
ライナスに喧嘩売ることになるかもだけど。
それをきっかけにlinuxをcにこだわるのをやめてくれるかもw

313:デフォルトの名無しさん
17/07/25 12:39:25.58 fQ81IbD6.net
pecoもghqもすでにrust版あるよ

314:デフォルトの名無しさん
17/07/25 13:18:07.15 E8ESHMbJ.net
wasmがもっと成熟すれば...

315:デフォルトの名無しさん
17/07/25 14:21:47.66 5XPEt11J.net
>>308
へー。リンク下さい

316:デフォルトの名無しさん
17/07/25 16:53:49.81 qEbQGi9S.net
>>310
URLリンク(crates.io)
URLリンク(crates.io)

317:デフォルトの名無しさん
17/07/25 17:33:21.29 CUwpfKAw.net
skimええやん

318:デフォルトの名無しさん
17/07/25 17:38:52.31 qu0St3oz.net
>>307
Facebookが社内向けにMercurial(Python + C)をRustで一部?書き直したら速かったらしい
俺も、社内向けツールを前任者がgoで書いたのを幾つかRustに移植してる
ただの練習素材として移植してたけど、2~3倍速くなったよ

319:デフォルトの名無しさん
17/07/25 19:00:41.47 FbhHJVqk.net
「Rust 1.19」リリース。union(共用体)をサポート
URLリンク(www.publickey1.jp)

320:デフォルトの名無しさん
17/07/25 20:32:46.37 5XPEt11J.net
>>313
おおー。魅力的な話だね。
メモリの使用量もrustだと減るようなきがするんだけどそのへんどうかな。

321:デフォルトの名無しさん
17/07/25 21:45:29.88 7Ef69C7C.net
rustは今の日本だと凄腕のプログラマが使ってるところはちょいちょい見かけるな。
もっとwebの人たちがたくさん布教すればいいんだろうけど、やっぱrust自体が難しいのかね。
C++とよくセットで名前が出てくるから、ビビる人が多いのかなーとも思う

322:デフォルトの名無しさん
17/07/25 22:11:08.39 FfK5LQFv.net
最近真面目に勉強し始めたけど潜在的に難解なバグを生み出す汚いコードを平気で書く人だと
コンパイルが通らないので辛いと思う。
若干煽り気味に言えばPHPやRailsだけやってプログラミングを分かった気になってちゃんと勉強してない人には無理。

323:デフォルトの名無しさん
17/07/25 22:21:26.92 5XPEt11J.net
ios -> objc, swift
android -> kotlin,java
web frontend -> typescript, javascript
web backend -> go,ruby,php
ってイメージだがrustはどこに入るの?

324:デフォルトの名無しさん
17/07/25 23:01:36.50 w/P80i1O.net
webassemblyの今後の成熟具合によっては、
web frontendに食い込んでいくかも

325:デフォルトの名無しさん
17/07/26 02:52:39.50 mSfCdN7l.net
>>318
希望的観測で言えば、
今までC/C++で書かれていたようなもの全てと、今goで書かれているものの半分 -> rust
WebAssemblyをほんとに必要としてるのは、ごく一部の人だと思う

326:デフォルトの名無しさん
17/07/26 08:56:45.29 ENBFGRGX.net
>>320
例えばc++ でUE4って書かれてるけど
そこをrustでってのはあるのかな?
ゲームエンジンとかはc++ってイメージだけどそれがrustでどうなるのか興味あるなー。
c++よりバグが少なくなってメモリ使用量も減るなら
家庭用ゲーム機とかの性能向上に役立ちそうだけど。

327:デフォルトの名無しさん
17/07/26 10:26:21.34 ENBFGRGX.net
URLリンク(rust-lang-ja.github.io)
このチュートリアルもうちょいなんとかならないのか
クロージャー周りの説明が抜けてるからなんだかふわっと触って終了みたいな感じになるんだけども。シンタックスの方から学んだほうがしっくりする。

328:デフォルトの名無しさん
17/07/26 12:59:44.03 TL1HhZT+.net
>>321
ゲームエンジンそのものがRustで書かれているのでなければ移行はないと思ってる
自分は据え置き開発だけど、ライブラリやツールやアセットパイプライン含めてC++ならそのまま利用する方が楽だし、ゲーム会社ならC++の資産やノウハウも蓄積されてる

329:デフォルトの名無しさん
17/07/26 16:21:03.85 G2QlGkU/.net
>>323
環境的にc++14使うくらいは許されてるの?

330:デフォルトの名無しさん
17/07/26 18:20:47.88 1Yp0AYo7.net
>>324
基本C++11かな
部分的に14の機能も使えるかも
そのうち使えるようになると思われる

331:デフォルトの名無しさん
17/07/26 18:36:05.35 0VRUk0dC.net
>>320はゲームエンジンそのものがrustにならんかのーって話じゃないの
その上っ面はC++のままで良いんでない

332:デフォルトの名無しさん
17/07/26 19:49:44.76 FgKZS4eT.net
>>322
最新ではその項無くなったよ

333:デフォルトの名無しさん
17/07/27 00:05:30.43 YcR0VV5Q.net
>>327
なんややっぱりそうなんだ。
やっててあんまり面白いとも思えなかったしね。
今シンタックスのところを読んでるけど、goより学習コストは高いなーと思った。
メモリ管理のメンタルモデルは学習を避けることができないから、尚の事学習コストは高いよね。
使い始めに関してはc++より難しいんと違う?

334:デフォルトの名無しさん
17/07/27 00:15:56.27 YcR0VV5Q.net
goを学習するモチベーションとなったのはgoroutineで並列処理を簡単に書けるからだったんだよね。
phpのバッチ処理を学習期間は2,3日で
goで並列処理を書けるようになった。
まぁ書けたってだけでgoの流儀って独特だから、その後の深淵に結構はまっていったんだけど。

深層学習の為のpython。
iosのためのswift。
みたくrustの始めるきっかけとなる分野ってなんかないのかな?
rustを書きはじめる皆さんのきっかけを教えてください。

335:デフォルトの名無しさん
17/07/27 08:45:36.82 alz7xNNS.net
>>329
社内でのC++開発に疲れて代替を探して。
ブライベートで使って、社内もこれにしたいと妄想する。そして誰も社内でRust使えない。

336:デフォルトの名無しさん
17/07/27 09:07:26.49 alz7xNNS.net
>>313
Rustにしちゃって、あなたの後任が困るとか、そういうことはないの?
社内でもRust認められてる?

337:デフォルトの名無しさん
17/07/27 10:08:19.56 JZl+5b/l.net
コードに問題があればcargo runでエラーが出ますけど
ビルドせずチェックだけを行う方法ないですか?
あと定番のlintツールも教えてください

338:デフォルトの名無しさん
17/07/27 11:54:01.80 NVUZFqS5.net
cargo check
clippy

339:デフォルトの名無しさん
17/07/27 12:47:34.70 tmRnr4Iu.net
>>331
前任者も認められてたからgo使ったわけじゃなく、goがもっとマイナーだった頃に勝手に使ってただけだし
俺も存在するかどうかわからない後任者など気にしてない
うちは大きな会社じゃないので、何を採用するかはプロジェクトリーダー次第

340:デフォルトの名無しさん
17/07/27 14:28:39.09 MedrFN4m.net
是非rust使ってレポートしてほしい

341:デフォルトの名無しさん
17/07/27 21:27:35.77 YcR0VV5Q.net
rustって課題を解いていく感じの学習サイトってないすかね?
goとかjsだとあるんだけど、、、

342:デフォルトの名無しさん
17/07/28 00:41:42.43 eqr+g7ZD.net
rusr by example 本家
URLリンク(rustbyexample.com)<)

343:デフォルトの名無しさん
17/07/28 08:34:02.73 O7VztC89.net
>>337
わぉ。ありがとうございます。普通にあってよかった

344:デフォルトの名無しさん
17/07/28 10:12:39.22 APGd6g7o.net
nightlyって頻繁に更新ありますか?
モバイルに接続してるのであんまり通信したくないからstable選んだんですけど
clippyがnightlyでしかインストールできないのつらい

345:デフォルトの名無しさん
17/07/28 13:36:38.25 IiZPJKRx.net
てすと

346:デフォルトの名無しさん
17/07/28 17:20:05.54 HRHd+c6j.net
cargo checkだと全てのrsファイルをチェックするので
cargo check hoge.rsみたいに特定のファイルを指定してチェックする方法ありませんか?

347:デフォルトの名無しさん
17/07/28 17:54:04.02 ABEdHekZ.net
Stableでは無理
Incremental compilationの安定化を待ちなされ

348:デフォルトの名無しさん
17/07/28 18:24:34.83 cPwtoBYF.net
>>342
あ、そのモジュールが他のモジュールに全く依存していない場合はrustc hoge.rs --crate-type=lib --emit=metadataが一応使えるんだった
ただしこれはカレントディレクトリにゴミをまき散らすからあまりおすすめできない

349:デフォルトの名無しさん
17/07/28 21:55:20.59 3/dxxKLW.net
REPLが欲しいんですが安定したやつないかな

350:デフォルトの名無しさん
17/07/28 22:25:19.67 kWrQnfQi.net
目の前の便利な箱で調べること出来ない教えて君は
実はRustで作った人工知能試験で動作試験してるんじゃなかろうな

351:デフォルトの名無しさん
17/07/28 22:36:44.17 GOfdf3yM.net
いまbookやってるんですけど
fn main() {
let x = 1;
println!("Hello")
}
これ1回目buildすると
warning: unused variable: `x`
--> src/main.rs:2:9
|
2 | let x = 1;
| ^
|
= note: #[warn(unused_variables)] on by default
って出るのですが、2回目buildするとこの警告が出なくなる
なんででしょうか?

352:デフォルトの名無しさん
17/07/28 22:40:19.95 jE9FvNjp.net
コンパイルの結果がキャッシュされているから

353:デフォルトの名無しさん
17/07/29 00:47:07.63 DIZfrj77.net
rustってまだ安定してない感じ?
開発環境は何がおすすめなんです?
vscodeを試したけどあんまりrustに対応してない感が

354:デフォルトの名無しさん
17/07/29 02:31:25.76 ZD4o/AdV.net
>>348
俺はIntelliJ派だから

355:デフォルトの名無しさん
17/07/29 02:34:36.68 7woiJ3eO.net
そうですか

356:デフォルトの名無しさん
17/07/29 10:51:47.46 Xgmp5DuD.net
Rustについて調べているのですが2点ほど質問です
・所有権、借用権ってどのようなケースを想定した機能なのか?
 並行処理を行うコードを書く時には同期ミスによる破壊を防止できて便利そうだけど上手い活用ケースを想像できない
・OS無しで動かす


357:コードを書くケースでRustが謳うメリットはどの程度いかせるのか?  メモリマップドレジスタへアクセスするためにunsafeと生ポインタを多用することになる  このようなケースでコンパイル時の安全性の検査条件などはカスタマイズできたりするのか



358:デフォルトの名無しさん
17/07/29 12:41:44.44 cTpvw2dC.net
vim + project.vim + rust.vimもいいぞ
コード量が多いと流石にIntelliJ使うけど

359:デフォルトの名無しさん
17/07/29 12:52:24.62 U9LihKmk.net
IDEAとvscodeってどっちがおすすすめ?

360:デフォルトの名無しさん
17/07/29 12:52:42.83 U9LihKmk.net
おすすめ?

361:デフォルトの名無しさん
17/07/29 14:45:43.16 3C62sBLB.net
>>313
噂をすればなんとやら
facebookexperimental/mononoke: A Mercurial source control server, specifically designed to support large monorepos.
URLリンク(github.com)
>>351
メモリ安全性以外での所有権の活用例としては、すでにボディを書き込み始めたHTTPレスポンスに新たにヘッダを書き込めないことを静的に保証する、とかいうのがある
URLリンク(docs.rs)
ヘッダを書き込んだレスポンスの所有権を奪って、ボディだけを書き込める型にして返している
URLリンク(docs.rs)

362:デフォルトの名無しさん
17/07/29 16:04:35.17 OScYBSe+.net
もののけ

363:デフォルトの名無しさん
17/07/29 16:29:29.84 PuR8d8Sj.net
ideaのrustプラギンはメソッドチェインが深くなるとハイライトされなくなって、リネームとかも取りこぼすことがある。それ以外はよくできてて満足

364:デフォルトの名無しさん
17/07/29 16:43:27.84 mj0H/MXI.net
>>351
所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。
と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。
他人にヤラれると殺意がわく。

365:デフォルトの名無しさん
17/07/29 16:55:38.17 mj0H/MXI.net
>>351
借用に関しては、不意の同期漏れ防止と思ってる。
ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん?
C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。
でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。

366:デフォルトの名無しさん
17/07/29 17:08:36.25 mj0H/MXI.net
>>351
最後、OS無しはどうかなー。
自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。

367:デフォルトの名無しさん
17/07/29 17:23:05.64 H7MJnrUX.net
Rustの素晴らしさを理解するにはC++を理解する必要がある?

368:デフォルトの名無しさん
17/07/29 17:27:03.96 DIZfrj77.net
>>360
メモリ安全にかけるのがrustなら
最初から最後までrustで書けるべきじゃない?

369:デフォルトの名無しさん
17/07/29 17:41:05.57 mj0H/MXI.net
>>362
最初から最後までメモリ安全じゃなくてもいいんじゃない?
適材適所で使い分ければ。
マルチスレッド問題はアプリ側に多い問題かなーって。
デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。
ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。
この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。

370:デフォルトの名無しさん
17/07/29 18:00:00.71 SaJE2wIQ.net
racer + flycheck-rust でマクロ補完って無理?
println!とかwrite!とか毎回全部打つのがダルい

371:デフォルトの名無しさん
17/07/29 18:10:49.31 DIZfrj77.net
>>363
結局cには勝てないのか。
rustってgcがないからメモリイメージを直接いじりやすいのかと思ってたよ。
redoxとかも結局c++に頼ってたりするんかな?

372:デフォルトの名無しさん
17/07/29 18:13:03.21 DIZfrj77.net
>>363
あと最初から最後までメモリ安全のほうが良くない?
少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。
逆にできないならrustの存在意義ってなんだろ。
goは並行処理が言語機能に組み込まれてる。
rustはメモリ安全が売りだと思うんだけど、
そこってなかなか地味な売りな気がして

373:デフォルトの名無しさん
17/07/29 18:57:22.38 mj0H/MXI.net
>>365
Cに頼る→負けてるって事じゃないと思うけどね。
実際アセンブリ言語はなくならないわけだし。
CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。
で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。
別にCを駆逐する必要はないしょ。

374:デフォルトの名無しさん
17/07/29 19:02:32.30 mj0H/MXI.net
>>366
そもそも、ハードに近い層でのメモリ安全性って何?って話だと思うんだ。
で、メモリ安全の話が出てこない領域なのだから、rustの出番が無いって事で良いんじゃない?

375:デフォルトの名無しさん
17/07/29 19:05:29.70 mj0H/MXI.net
>>361
むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。

376:デフォルトの名無しさん
17/07/29 19:59:14.72 DIZfrj77.net
goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。
まさかブラウザ開発のため?

377:346
17/07/29 20:14:02.81 DdYvAide.net
>>347
キャッシュを無効にして毎回警告を出すにはどうしたら良いでしょうか?

378:デフォルトの名無しさん
17/07/29 20:22:55.12 OScYBSe+.net
>>369
俺もRustはじめてからC++が少しよく書けるようになりました

379:デフォルトの名無しさん
17/07/29 21:18:30.65 ZD4o/AdV.net
>>355
へー、monorepo用だからモノノケとな
mercurialをベースに仮想ファイルサーバーにする予定とは、なかなか壮大な計画だ

380:351
17/07/29 21:52:24.31 Xgmp5DuD.net
レスありがとうございます
>>355,358-359
なるほど。やはり並列処理時の安全性を担保する機能なのですね
組み込みでRTOSもどきを作って並列処理させるなんて場合には有効なのかな
>>360
構文上罠が多いC/C++の代替となる言語を探していてRustを検討しています
なのでC/C++を使わずにC/C++相当のことを行いたいです
警告もエラーも無しに動作だけがおかしいとか勘弁して欲しいです
他にDも検討していますが何となく新しい方が何かと便利かなと思ったり・・・

381:デフォルトの名無しさん
17/07/30 03:44:39.97 m1nsIIH9.net
以前にこのスレであったら良いと言われていたOptionのEntry風APIが実装されて、しかも既にstabilizeされている
std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3
URLリンク(github.com)

382:デフォルトの名無しさん
17/07/30 08:00:41.23 eSrcFrA9.net
>やはり並列処理時の安全性を担保する機能なのですね
race condition の解消はあくまでもメモリ安全の一部でしかない

383:デフォルトの名無しさん
17/07/30 08:02:46.70 eSrcFrA9.net
>


384:他にDも検討していますが何となく新しい方が何かと便利かなと思ったり Dが検討対象に入って、かつ、低水準用途なの? 意味わからんな



385:デフォルトの名無しさん
17/07/30 08:03:42.92 NzSybo/S.net
351からは実際にプログラム組んだことの無い人の気配がプンプンしてる。

386:デフォルトの名無しさん
17/07/30 11:40:03.02 sZ4wntzb.net
cargo check のメッセージが加工しづらい
URLリンク(github.com)これ追加されて欲しい

387:デフォルトの名無しさん
17/07/30 16:21:42.29 vygP638r.net
たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね

388:デフォルトの名無しさん
17/07/30 17:42:42.26 cNiju5gN.net
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


389:デフォルトの名無しさん
17/07/30 19:43:29.15 IhAKIxVt.net
CランタイムをスタティックリンクしたくてRUSTFLAGSに以下のフラグを設定しています。
RUSTFLAGS='-C target-feature=+crt-static'
これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか?
URLリンク(doc.crates.io) を参考に下のように書いてみたのですが効いてないようでした。
[build]
rustflags = ["-C target-feature=+crt-static"]
オプションの書き方が違っているんですかね?

390:デフォルトの名無しさん
17/07/30 19:51:11.45 m1nsIIH9.net
["-C", "target-feature=+crt-static"]
でどうかしら

391:デフォルトの名無しさん
17/07/30 20:00:04.61 IhAKIxVt.net
うーん、このへん試してみたんですけどだめなんですよね。
["-C", "target-feature=+crt-static"]
["target-feature", "+crt-static"]

392:デフォルトの名無しさん
17/07/30 22:39:37.27 KR/rniwV.net
>>381
一時的に古いnightly使えば良いのでは

393:デフォルトの名無しさん
17/07/30 23:38:44.64 dsY+op8E.net
まだruct学んで2日目だけど
これパッケージ入れる時のコンパイルが長いね
補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ
基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど
ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ

394:351
17/07/31 01:33:05.73 0NH1HYUL.net
>>377
C/C++より判りやすく罠が少なくC/C++で出来ることは全て出来る言語を探しています
>>378
ネイティブに動くプログラムで一番経験があるのはアセンブラ(組み込み)です
C/C++はなんの警告もなくメモリがぶっ壊れるし、どこが壊しているのかも判りにくいし
苦手です

395:デフォルトの名無しさん
17/07/31 09:17:51.12 nR0sqwYk.net
アセンブラは型がないぶんさらにメモリ壊しやすいと思うが

396:デフォルトの名無しさん
17/07/31 13:44:43.25 luO5NyKL.net
ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって
これって結局
全部ローカル変数になるってこと?
プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない?
cとかでもやろうと思えばできるって事?
cでmallocとかfreeを使わず、
全部変数定義してつかえばrustと同じ?

397:デフォルトの名無しさん
17/07/31 16:54:10.50 RkZnFpRc.net
メモリに限らずリソース確保全般を行わないプログラムって何ができるのか
可変サイズの入力を受け取るならmallocがほ


398:ぼ必須じゃない? 1行MAX_LENGTH文字までのテキストしか処理しないとか?



399:デフォルトの名無しさん
17/07/31 17:16:32.22 CRPdTSOK.net
rustってどんな分野に向いてるのかいまいちわからないんだけど
webに使うのはおすすめできる?

400:351
17/07/31 19:18:45.74 S3S/4XWd.net
C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか
>>388
プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く
メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし
もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う
個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな

401:デフォルトの名無しさん
17/07/31 19:24:58.57 nTqL7k1O.net
アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが
Volatile関連の制御とかだって面倒なだけだし

402:351
17/07/31 21:28:38.42 S3S/4XWd.net
>>393
C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS
そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです
C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな

403:デフォルトの名無しさん
17/07/31 22:26:49.07 nR0sqwYk.net
C/C++というレベルじゃなくて
LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想

404:デフォルトの名無しさん
17/08/01 18:09:39.02 TrH0Acv/.net
>>391
いわゆるWebアプリを書く言語としてはおすすめしない。

405:デフォルトの名無しさん
17/08/01 18:17:25.28 TrH0Acv/.net
>>392
C/C++に慣れていないだけでは。
もしくは動的なメモリ確保を想定していないとか。

406:デフォルトの名無しさん
17/08/01 18:21:43.31 TrH0Acv/.net
>>394
(わりと一般的な)OS上で動かす限り、アセンブリ言語で書いても
リンカとローダが介在することには変わりないと思うけど。

407:デフォルトの名無しさん
17/08/01 18:52:10.83 8J/offgv.net
>>351はOS無しと言っている

408:デフォルトの名無しさん
17/08/01 19:26:38.99 A6tuVNB3.net
>>351
OSなしアセンブラを必要とする層で使える汎用高級言語を探してるならRustは適さないからお帰り
そういう言語が存在する気はしないけど夢追い人っぽいから応援はしてるよ

409:351
17/08/01 19:28:04.99 ascdikyg.net
新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や
メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな
これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか

410:デフォルトの名無しさん
17/08/01 21:16:08.18 PIQ133u2.net
>>400
まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念
例えばESP8266とかESP32で使えたらいいとか思ってたよ。
webが利用用途じゃないって残念すぎるな。
そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が
趣味的に触る言語ってことかな。

411:デフォルトの名無しさん
17/08/01 22:02:02.77 A6tuVNB3.net
お前の中ではGC有無とOS要否は直結するのか(驚愕
ESPがどういうチップセット構成なのか知らんけど
ARM CPUならクロスコンパイルして動かせるんじゃね
多分、同じ程度の努力でGC載ってるGoも動くと思うけど

412:デフォルトの名無しさん
17/08/01 22:04:43.31 H6BRQUwS.net
cargo checkすると
warning: the option `Z` is unstable
というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?

413:デフォルトの名無しさん
17/08/01 22:04:54.04 8J/offgv.net
Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある
crates.ioとかだってRust製だしね

414:351
17/08/01 22:43:53.38 ncmaIafS.net
>>402
ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた
とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから
昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が
ある程度保たれるというのはメリットだと思う
組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね

415:デフォルトの名無しさん
17/08/02 00:38:23.97 Oyyz61S9.net
>>400
いや、そういう用途向けでしょ。
実際にOSの実装に用いられてるし。

416:デフォルトの名無しさん
17/08/02 00:46:25.26 9o+N0qJU.net
上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの?
言い換えると、extern crate coreすら出来ないやつ

417:デフォルトの名無しさん
17/08/02 01:03:22.66 OoZ5R2Ag.net
なんか勘違いしてる人がいるね
Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること
例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう
>>408
OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況?
libcoreは何にも依存してないからそんな状況ありえないと思ってた

418:デフォルトの名無しさん
17/08/02 01:08:41.51 CN84q205.net
アセンブリ君

419:351
17/08/02 01:16:10.65 Qb6MNIfM.net
あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか

420:デフォルトの名無しさん
17/08/02 01:21:03.63 E8GFzbft.net
>>396
>>405
今は使い物にならないって事?
向いてると思って趣味のWEBアプリに採用したけどやめたほうがいいのかな
Golangは古臭すぎて使う気起きないし
正直速度はどうでもいいけど構文が好き

421:デフォルトの名無しさん
17/08/02 01:21:20.56 Hth04IJp.net
coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね
rust_begin_panicとかをどうやって用意するのかは知らないけど

422:デフォルトの名無しさん
17/08/02 01:22:27.24 /y5AMSWR.net
RustでもOS書けるでしょ
(もちろんCと同じく最低限のアセンブラはいるが)
ぐぐればいろいろ見つかるぞ

423:351
17/08/02 01:38:12.16 Qb6MNIfM.net
>>411ミスった。訂正
× 組み込みでそのようなコードを書くのか判っている人
○ 組み込みでどのようなコードを書くのか判っていない人
>>409
>例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う
xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして
>そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
もちろん入力値のチェックは必要になるだろうけど

424:デフォルトの名無しさん
17/08/02 02:29:19.43 OoZ5R2Ag.net
>>413
確かにmemcpyとかあるね、忘れてた
まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね
> rust_begin_panic
組み込みならシリアルにでもログ出して無限ループとかが普通かな?
こういうのはOS系のプロジェクトがとても参考になる
>>415
> その定義を作る気力があるかはともかくとして
実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね
> ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない
Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね
そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり

425:デフォルトの名無しさん
17/08/02 07:02:07.94 nq2BG13A.net
redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの?
結局何がしたいのか分からんな・・・
そこについては諦めているなら既に実用化されているし
そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ

426:デフォルトの名無しさん
17/08/02 08:11:06.98 Oyyz61S9.net
>>415
レジスタまで意識する用途なら、高級言語を使わないのが正解では
> xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。
それこそボード固有の話になるので。
高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。
何れにせよ言語レベルで対応する話ではないな。

427:デフォルトの名無しさん
17/08/02 10:50:44.07 AyM7Pnm7.net
>>412
>向いてると思って趣味のWEBアプリに採用した
やってみたら良いと思う。
仮にミスマッチだったとしても、過程や結果を公開すれば、色んな人の役に立つ。

428:デフォルトの名無しさん
17/08/02 12:12:53.41 m0LDca1I.net
rustっていまのところ
何にも向いてないということか。
golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。
とりあえずwebはgoでいいや。

429:デフォルトの名無しさん
17/08/02 12:21:18.09 E8GFzbft.net
>>419
webアプリ作るならunsafe必須とか?
cもc++も触った事ないからunsafeだけは無理なんだけど…

430:デフォルトの名無しさん
17/08/02 12:56:49.05 qhSfUKHc.net
変なチューニングに走らない限りはunsafeは不要
ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある
あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん

431:デフォルトの名無しさん
17/08/02 15:19:15.45 E8GFzbft.net
>>422
unsafeは不要なのか、よかった
Railsは使ったことないから分からない
今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない
rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?

432:デフォルトの名無しさん
17/08/02 16:38:11.64 I334RkfN.net
goでいいや、という人はまさにgoでよいのでは。
goではいやだ、という人むけ。

433:デフォルトの名無しさん
17/08/02 16:42:18.62 E8GFzbft.net
goとかいうmapもnull安全もないうんこは絶対NG

434:デフォルトの名無しさん
17/08/02 17:58:49.69 m0LDca1I.net
goが嫌だと言うなら
kotlinという選択肢もある。
これだとアンドロイドアプリももれなく使えるようになるし、
null安全だし。
何よりideが既にある

435:デフォルトの名無しさん
17/08/02 18:06:51.08 5BVbLnR+.net
過疎だからいいけどrustの話しようぜ

436:デフォルトの名無しさん
17/08/02 18:07:43.92 E8GFzbft.net
kotlinもscalaもjvm言語だからあまりnull安全じゃない

437:デフォルトの名無しさん
17/08/02 19:54:07.78 7vYFqN5x.net
rustはno_coreにしてベアメタルでリージョンにメモリ管理やってもらうだけに全振りすればいいよ!
え?ヒープ使いたい?rustc_privateでalloc系をだな。
アセンブリもcpu毎にアセンブラ用意するのが面倒くさいからrustのinline asm使おうぜ。
>>404
そのまんま。
cargo checkはZオプション付けてるだけだから「Zオプションは安定してないから注意しろよ」ということ。
>>428
言ってる意味がわからない。

438:351
17/08/02 20:02:49.43 5dN3nnfV.net
>>416
unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか

439:デフォルトの名無しさん
17/08/02 20:28:52.05 xy+LcKRk.net
本格的にOS無しの世界に入ったことが無いから適当だけど、関数型プログラミングの道具が使える、とか?>Rustのメリット
代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。
趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる

440:デフォルトの名無しさん
17/08/02 20:31:53.85 E8GFzbft.net
>>429
javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事

441:デフォルトの名無しさん
17/08/02 20:54:36.60 Hth04IJp.net
>>429
>cargo checkはZオプション付けてるだけ
補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、
標準のcargo checkは--emit metadataを使っているから警告は出ない

442:デフォルトの名無しさん
17/08/02 21:09:38.43 FxAsS3hN.net
>>429
>>433
普通に使ってれば表示されないメッセージなんですね
cargo checkが出力するエラーや警告などをもう少し調べたいんですけど
これってどこに乗ってるんでしょうか?
cargoのリポジトリクローンしてから適当なエラーでgrepしてもヒットしないんです

443:デフォルトの名無しさん
17/08/02 22:00:58.19 7vYFqN5x.net
>>432
VMじゃなくてライブラリの話ね。
ceylonみたいなjavaとのシームレスな通信を捨ててるJVM言語はどうだろうか?
>>434
cargo-checkっていうthaad partyのサブコマンドがあるんだけど、
後にcargo自身に全く同じサブコマンド名でちょっと違うコマンドが追加されたの。
だからcargo-checkの方つかってるはず。
`cargo install --list`してみ。
URLリンク(github.com)

444:デフォルトの名無しさん
17/08/02 22:13:46.45 h6wu2BXI.net
物騒なpartyのサブコマンドだな

445:デフォルトの名無しさん
17/08/02 22:28:55.57 Hth04IJp.net
THAAD partyワロタ

446:デフォルトの名無しさん
17/08/03 00:45:37.29 InlYWDxN.net
>>430
unsafeを使わないとできないってのはその通りだけど
> もちろん入力値のチェックは必要になるだろうけど
って処理を含めた関数を作ってunsafeな部分を支配下に含めることでunsafeでない処理にするってことが言いたかった
例えるとmallocの戻り値チェックを入れてOption<&mut T>を返す関数を作ってラップすることでunsafeでなくするって感じ
これを面倒くさがるとぬるぽに遭遇するがちゃんとラップすればガッが「一切」必要なくなるわけだ
でも今度はfreeしてない問題が発生するからスマポ作って・・・と徐々に面倒くさくなってきて > コストとの相談
>>431
ライフタイムとか借用とかの安全機能抜きにしてもパターンマッチとか他の言語機能で見てもRustは魅力的だよな
・・・まずい、mainにunsafe付けてBetter CとしてRustを使う世界もありな気がしてきたぞ

447:デフォルトの名無しさん
17/08/03 04:52:30.89 dQPpbAHc.net
Java の参照は、Nullable だから、
Kotlin で扱う場合、すべて、Nullable にすると面倒
そこで、Kotlin では、Platform Type (下の3) と言うものを作った
String 変数型に、Null 代入時、
1. String で、実行時に、IllegalStateException
2. String? で、Nullable だからOK
3. 型を省略(String!) で、実行時に、デリファレンスでヌルポ



448:1. は、インスタンスにアクセスする前に、代入時にエラー。 3. は、1よりひどく、インスタンスにアクセスして、ヌルポ



449:デフォルトの名無しさん
17/08/03 07:06:29.97 l/KHeBEE.net
Kotlin信者が必死だなw
JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿
Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?

450:デフォルトの名無しさん
17/08/03 08:03:17.08 eYqeDR4x.net
スレチ削除申請頼む

451:デフォルトの名無しさん
17/08/03 08:29:31.88 hrCRy9t8.net
組み込みスレ?

452:デフォルトの名無しさん
17/08/03 08:39:41.14 563u4f2I.net
>>441
いちいちスレチだけでレス削除してくれるほど運営も暇じゃねーよ
板違いのスレも最近は「落ちるまで放置してね」の方針なのに

453:デフォルトの名無しさん
17/08/03 10:32:34.73 TRkbUvPZ.net
rust 1.21.0使ってますが英語苦手なので日本語ページ見てます
URLリンク(rust-lang-ja.github.io)
このページの一番最後
「else のない if では、その値は常に () となります」とあるので
let x = 0;
let y = if x == 1 { 1 };
println!("{}", y);
って書いたんですけどbuildしてもエラーになります
error[E0317]: if may be missing an else clause
()になりませんどうしてですか?

454:デフォルトの名無しさん
17/08/03 10:33:20.99 WxFDmNeE.net
>>440
ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。
llvmの中間コード吐けるようになる。
rustより学習コストは低くて関数型チックな言語構文使ってるから
kotlin vs rustが勃発するな。
問題はandroid開発者を取り込めるからユーザー数は圧倒的
IDEも標準が存在する。
という点で色々rustは不利。
rustはwebAssenbryあたりで本領発揮できればいいんだけど。

455:デフォルトの名無しさん
17/08/03 10:35:36.32 WxFDmNeE.net
>>444
エラーメッセージ観るとelse節がないって怒ってるね
yに代入するんだからelseないと値が不定になるでしょ

456:デフォルトの名無しさん
17/08/03 10:39:45.44 WxFDmNeE.net
>>444
ごめんちゃんと読んでなかった
fn main() {
let x = 5;
let y = if x == 5 { () };
println!("{:?}",y)
}
これだと動くよね。型を() に統一しないとダメなんじゃない

457:デフォルトの名無しさん
17/08/03 10:52:53.58 TRkbUvPZ.net
>>447
なるほどそういうことですか
省略しないほうがいいですね
ありがとうございました

458:デフォルトの名無しさん
17/08/03 16:58:16.30 cu622efE.net
IntelliJ Rustプラグインが、(IDEの)公式プラグイン化した
ついでにちょっとおせっかいな表示も始めた
関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか

459:デフォルトの名無しさん
17/08/03 22:02:43.27 l/KHeBEE.net
有料化しなきゃどうでもいいかな

460:デフォルトの名無しさん
17/08/03 22:11:43.17 ztpCIQ/J.net
JetBrainsが開発に参加しているというだけでもそれなりに心強い

461:デフォルトの名無しさん
17/08/04 09:17:26.55 plGTqVJg.net
あのプラグインの作者、前にPR出したらクッソ丁寧なダメ出ししてくれた
PRコメントの数倍のレスが返ってきてビビったわ
引き続きコミュニティベースで発展するといいのう、MozillaもJetBrainsもあんま要らんことするでないぞ

462:デフォルトの名無しさん
17/08/04 11:05:40.90 ZGf6UrbU.net
>>452
個人的には language server protocolをちゃんと


463:用意してくれたほうが幸せ。 vscodeで使いたいんで。 http://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4 https://github.com/rust-lang-nursery/rls



464:デフォルトの名無しさん
17/08/04 22:55:37.21 KlM1Xeqg.net
>>444,446,447,448
型が一致してないからや。
if式のelse句省略して戻り値の型にunitが推論されるのに
thenの方の戻り値の型がunit以外になるからエラーになる。
たぶん、rustc --explain 0317すればクソ丁寧に教えてくれる

465:デフォルトの名無しさん
17/08/05 02:43:30.26 WbpcX2VW.net
Windows用のtar.gzを落としてきて適当に解凍
.\rust\binへパスを張って
>rustc hello.rs
error[E0463]: can't find crate for `std`
error: aborting due to previous error(s)
>
えぇぇー・・・・w
.\rustcの中を見てもライブラリらしき物が見あたらないのでどこにいるのかと探したら
.\rust-std-i686-pc-windows-msvcの下にいた。.\rustc\libの下に移動したらコンパイルは
通ったがリンカがないと怒り出す
面倒なのでVC++のコマンドプロンプトからパスを張ってようやくコンパイル&リンクに成功
無事に実行出来た
というか実行ファイルがかなりでかいな。100KBくらいある。全部込みじゃしゃーないか
あと-vや-C link-args=が無視されているように見える

466:デフォルトの名無しさん
17/08/05 02:47:41.52 Q+GU1zzP.net
そもそも今日日tar.gzなんてどこから落としてきたんだっていう

467:デフォルトの名無しさん
17/08/05 03:11:33.75 WbpcX2VW.net
他のインストール方法ー→スタンドアロンなインストーラーにビルド済みを固めたtar.gzがある

468:デフォルトの名無しさん
17/08/05 07:15:49.71 49wfyY1x.net
何らかの信念があって、rustupを避けてるわけ?

469:デフォルトの名無しさん
17/08/05 16:01:00.22 WbpcX2VW.net
オンラインによるインストールは可能な限り避けるようにしている。あとで環境の再現が必要になった時に詰む可能性がある

470:デフォルトの名無しさん
17/08/05 16:18:44.06 CGuOYehU.net
メモリ安全が重視されるのって、ハッキングとかに使われるから?

471:デフォルトの名無しさん
17/08/05 16:22:20.12 uZdWE4Go.net
脆弱性になるからってのもそうだけど、単純にSEGVでプログラムが落ちるのを防ぐためというのもある

472:デフォルトの名無しさん
17/08/05 16:31:03.26 CGuOYehU.net
代わりにunwrapで落ちまくり
いや、うそ
それ以外のバグだと落ちはしない?

473:デフォルトの名無しさん
17/08/05 17:34:15.87 49wfyY1x.net
メモリ安全とミドリ安全って似てるよな

474:デフォルトの名無しさん
17/08/06 00:23:03.22 8w1+5d3W.net
>全部込みじゃしゃーないか
msvc toolchainでstaticリンクになったっけ?

475:デフォルトの名無しさん
17/08/06 03:55:05.27 fFJNwhsI.net
>>464
リンカにどんなコマンドが渡されているのか確認できないので詳細は判らない

476:デフォルトの名無しさん
17/08/06 03:55:59.27 fFJNwhsI.net
あ、なんか変だ。訂正
× コマンド
○ オプション

477:デフォルトの名無しさん
17/08/06 10:24:33.59 gzkOLnwH.net
Rustの日本語書籍出る予定ないのかな?

478:デフォルトの名無しさん
17/08/06 17:24:42.71 hteV9R0w.net
>>467
英語で原典的な本が出るから遠からず日本語訳も出るだろ
ただし日本語訳の翻訳の質がどうなるかは全く安心できないことは
近年のプログラミング関連の英語書籍の日本語訳を見れば理解できるだろう

479:デフォルトの名無しさん
17/08/06 23:17:23.51 5q4qU5gd.net
書籍は情報が古すぎて当てにならんぞ。
文書化自体あんま力入れてないからソースコード読むのが一番早いよ。

480:デフォルトの名無しさん
17/08/06 23:38:02.09 Q0UOjaQj.net
訳のレベルに関係なく出せば売れるからかな
需要が少なすぎて競争にならないから訳の質がいい物が出ない?

481:デフォルトの名無しさん
17/08/07 04:31:33.89 +587VfNE.net
>>469
どのサイトのソースコード読むのがいいですか?

482:デフォルトの名無しさん
17/08/07 04:33:15.84 lxGlucTV.net
>>470
> 需要が少なすぎて競争にならないから訳の質がいい物が出ない?
そうじゃない
英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した
その原因として考えられるのは、訳者が使命感を持たなくなり単に副収入とかの経済的で利己的な目的で翻訳をするようになったことと
それ以上に訳者が大衆化したことも大きい(かつてだと理工学書の翻訳は、ほぼ完全にいわゆる一流大学の教授の専権事項だったが今は全く違う)
またそういう一流大学教官による訳書であっても、近年は、ゼミで原書を読ませて学生(院生?)たちに素訳を出させて適当につなぎ合わせて
訳書として出版したのでは?と疑われるレベルの訳すら出現しているのは、明らかに近年の訳者のモラルの低下(使命感の欠如)の例だろう
近年の訳の質の低下に関してもう一つ重要なファクターとしては、最近の訳者が英語(特に会話面で)は達者になったのかも知れないが
明らかに昭和後期の訳者たちよりも日本語の文章力が低下していることだ(その結果として訳の日本語文が読むに耐えないレベルに堕している訳書が少なくない)

483:デフォルトの名無しさん
17/08/07 07:28:08.80 PGcD2DjA.net
というかそもそも書籍を出す以上利益を見込むわけだけどRustの書籍が出たところで到底コストに見合う利益をあげられるとは思えん

484:デフォルトの名無しさん
17/08/07 08:02:25.73 ElcK6Dg+.net
唐突に小論文もどきが発生していて笑う
steveklabnikやcarols10centsは大学の教官ですらないだろうけれどそれは良いのか

485:デフォルトの名無しさん
17/08/07 08:15:17.32 rE42Biik.net
「監訳者」がいるが「訳者」が書いてない本って、やっぱそんなもんだろうね
あるいは機械翻訳をちょこっと手直ししただけとか
名前を表に出すって内容に責任を持つってことだから、名前重要よ

486:デフォルトの名無しさん
17/08/07 08:29:28.94 +587VfNE.net
Rustの入門書サイトなどおすすめありますか?

487:
17/08/07 08:31:32.26 Y4YBisBB.net
>>472
なにも今にはじまったことじゃない
>ゼミで原書を読ませて学生(院生?)たちに素訳を出させて
>適当につなぎ合わせて訳書として出版したのでは?
プログラミング言語C とてそうやって作られた、といわれている

488:デフォルトの名無しさん
17/08/07 08:32:44.78 ONon98mg.net
典型的な老害で笑える
ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ
Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない

489:デフォルトの名無しさん
17/08/07 12:03:28.98 NP3377Zu.net
>>476
公式

490:デフォルトの名無しさん
17/08/07 16:12:50.80 lxGlucTV.net
>>478
> 典型的な老害で笑える
> ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ
外資系や新興の出版社が出す本は訳書に限らず酷いのは昔から
編集担当者が日本語文のチェックを碌にしないしそういう新興出版社は人脈を持っていないゼロからのスタートだから良い訳者が無かったからね
問題は、近年は、老舗と言える理工系出版社から出されている訳書でも翻訳の質が急激に堕ちて来たことだ
その原因は翻訳の大衆化と訳者のモラルや使命感の低下にあると言ってるのだよ
> Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない
馬鹿ですか?
そんな高度で難解な技術書など存在しても極く一握りで、そんな極めて特殊な例�


491:謔闍唐ーて反論するなどナンセンス そんなナンセンスで反論だと思ってる君の知性を疑うね そもそもそんな難解な技術書を読んで理解できる人間も一握りだ そんなレベルの人間ならば原書で読めるから翻訳する必要性も希薄 問題は、かつてならば普通の質で翻訳されていた難易度が平凡なレベルの教科書・技術書・学術書ですらまともな日本語訳でないのが量産されるようになったという点



492:デフォルトの名無しさん
17/08/07 17:27:07.42 PfKZEtLc.net
アカデミアを知ってる気取りの学生の臭いがプンプンするけど、そんなことを書き込んでいる暇があったら期末試験の勉強しとけよな

493:デフォルトの名無しさん
17/08/07 17:35:11.15 n0QtNiqf.net
>>472
> 英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した
それ何か根拠があって言ってんの? どうせお前の妄想だろ。
長々と言い訳せんで良いよ、消えろ。

494:デフォルトの名無しさん
17/08/07 17:35:27.75 8DeyRC3s.net
計算機学の正式な教育を受けたことがないからわからないけど,たとえば数学では大学2年までに学ぶべき科目の教科書は翻訳でも日本語教科書でも定番と呼べる本が出揃ってるんだよね
そんな中で使命感を持って初学者向けの本を訳したがる人はそうそういないでしょ
技術書界隈でもそんな現象が起こってるじゃないの

495:デフォルトの名無しさん
17/08/07 18:08:53.23 Y4YBisBB.net
>>483
解析学と線形代数の定番を教えてください、できればギャップの極度に少ないものを
翻訳じゃなくて、「解析概論」(高木)よりは親切なやつを
是非!

496:デフォルトの名無しさん
17/08/07 18:36:14.26 8DeyRC3s.net
杉浦本と斉藤本じゃあかんの(多変数の議論に飛躍が入るのはしょうがない)

497:デフォルトの名無しさん
17/08/07 18:36:16.49 n9zFQLuH.net
>>484
うちの親父の形見が解析概論なんだが

498:デフォルトの名無しさん
17/08/07 18:39:57.17 ElcK6Dg+.net
スレチ

499:デフォルトの名無しさん
17/08/07 19:45:52.18 8DeyRC3s.net
ごめん

500:デフォルトの名無しさん
17/08/07 20:05:48.41 8DHQ/UcZ.net
でもここ20年でネット利用者の情報リテラシーと日本の国際的な技術的地位はかなり落ちたよな

501:デフォルトの名無しさん
17/08/07 21:05:17.72 q/Po/zS7.net
近年は、技術書の日本語翻訳版が出るころには、次のメジャーバージョンがリリースされて買う気を失う傾向

502:デフォルトの名無しさん
17/08/07 21:56:28.43 JP8gCgB5.net
ITは元々レベル低かったんじゃない?ハードは強かったけどソフトはそんなに

503:デフォルトの名無しさん
17/08/07 23:32:35.06 tGwRq2k1.net
おまえらexa紹介されてる
URLリンク(www.cyberciti.biz)

504:デフォルトの名無しさん
17/08/07 23:34:52.24 R3k5HOGA.net
lsコマンドに替わるコマンド「exa」とは
URLリンク(news.mynavi.jp)
exaはRustで開発されたls系コマンド。
サイズが小さく高速に動作し移植性も高いという特徴がある。

505:デフォルトの名無しさん
17/08/07 23:58:47.36 LiwmU2BL.net
Rust関係なくてスマネ
>>491
全てとは言わないけど分野によっては世界トップクラスだったよ
1.コンピュータアーキテクチャ&オペレーティングシステム
 Windowsが走るコンピュータアーキテクチャを開発、販売していた数少ない国の一つ
 そのためにWindowsのカスタマイズも行っていた
2.日本語ワードプロセッサ
3.日本語入力変換システム
 この二つは語るまでもないよね。ユーザーは積極的に捨てたけど
4.低レベルの実装、解析
 かつては日本製のBIOSパッチとか野良BIOSとかがあった。このへんの技術は1とも絡むね

506:デフォルトの名無しさん
17/08/08 00:52:12.66 b/ztEhQD.net
どうでもいいけどexaって打ちづらいから普通にlsでええわってなる

507:デフォルトの名無しさん
17/08/08 01:39:41.54 Apkyawzp.net
>>495
エイリアスつかえば

508:デフォルトの名無しさん
17/08/08 22:30:57.70 0Gdz9Dwg.net
>>482
それ以前から理工学書を読んでいる人間ならば多くが同様の感想を持っているわけだが
読んでない人間は知らんがね
他人の投稿が気に入らず読みたくないならば、お前がこのスレを読まずに消えれば済むこと

509:デフォルトの名無しさん
17/08/08 22:33:19.04 tK7llXaf.net
幅広い理工学書の全てを知り尽くした>>497

510:デフォルトの名無しさん
17/08/08 22:39:16.48 B6tVSdcm.net
アカデミックこじらせおじさんかイキリ大学生か

511:デフォルトの名無しさん
17/08/08 22:54:17.33 XDy6h+kL.net
A. 20年前と今の理工学書を比べられる、2chのドマイナーな言語スレにいる
  ->アカデミック関係者の可能性
B. 自分の意見の論拠が薄い、的確なソースを出せない印象論
  ->実体験であるなら妥当
C. スレ違いの話を得々と語る、煽りに慣れていない
  ->コミュニケーションに難あり
>>497が本当に一流大学の教官である可能性は微粒子レベルで存在する
が、話の中身は与太話だし、何を言ったかだけを判断するなら塵芥と同じ扱いでよろし

512:デフォルトの名無しさん
17/08/09 09:35:51.16 mzNn5sYF.net
>>497
結局「根拠は無い」というレスして恥ずかしくないの?

513:デフォルトの名無しさん
17/08/09 20:42:37.62 jJFzyGYq.net
Firefox高速化
URLリンク(www.itmedia.co.jp)

514:デフォルトの名無しさん
17/08/09 20:56:02.48 yH2dFN1n.net
>>493
FDの作者って亡くなったんだっけ

515:デフォルトの名無しさん
17/08/09 22:29:08.98 BGGA/pTO.net
1つのパッケージをインストールするだけでも時間が何十分とかかる
萎える~

516:デフォルトの名無しさん
17/08/09 23:44:38.45 oO58YE7v.net
Rust 1.19におけるタグ無しのunionなどの追加
URLリンク(www.infoq.com)

517:デフォルトの名無しさん
17/08/09 23:50:55.47 AaV7WIeC.net
>>504 環境変数としてCARGO_TARGET_DIRを適当なところに置くと、以前にビルドしたcrateを利用してくれるよ
まあバージョンが違ったりしたらやり直しだから気休めにしかならんかもしれんが

518:デフォルトの名無しさん
17/08/10 09:16:01.74 hSTXQfAm.net
ライフタイムがよく分からんから、ライフタイム定義なしで動くプログラムは作れるようになったんだけど、
ここから必要に応じて参照使いまくりでライフタイムしまくりが出来るようになるにはどうしたらいいでしょうか?

519:デフォルトの名無しさん
17/08/10 11:35:07.02 +tFBM5sG.net
>>507 個人的な経験談だけど、ライフタイムが複雑で分かりにくいときはデザインから見直した方が良い場合が多い
単にコピーされるのを嫌って参照にすると駄目で、元の値の完全な従属物のときだけ参照を使うと大抵はうまくいく
メンバ変数間の参照はキツいので手を出さない、グラフとか所有権が複雑なのも自分じゃ作らずにライブラリにしておく、とか

520:デフォルトの名無しさん
17/08/10 13:04:49.06 qDPlaybB.net
rustで検索してもほとんどゲームの話題しか検索に引っかからなくて草
rustの日本コミュニティーないの?

521:デフォルトの名無しさん
17/08/10 13:14:22.08 v3fv+3Jb.net
ここじゃよ

522:デフォルトの名無しさん
17/08/10 13:29:36.14 jhaqJJbw.net
>>508
え、同じstruct内でメンバ変数間の参照は出来ないでしょ?

523:デフォルトの名無しさん
17/08/10 14:00:03.18 g9gtECZC.net
>>509
slackがある
登録済の人 -> URLリンク(rust-jp.slack.com)<) 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)


524:デフォルトの名無しさん
17/08/10 18:33:30.12 DpOw+Ywo.net
おれもslack見つけるのすごく時間かかった

525:デフォルトの名無しさん
17/08/10 19:56:47.71 oX316LZB.net
>>511
unsafeなコードでゴニョゴニョしないと無理だね
RocketのFairingsなんかがゴニョゴニョしているものの例
URLリンク(github.com)

526:デフォルトの名無しさん
17/08/10 20:06:16.94 5YNarUir.net
Arcでもダメなんだっけ?使う機会がないからTutorialで読んだきり見たことないけど

527:デフォルトの名無しさん
17/08/10 22:57:52.57 Ib9pl7ao.net
>>507
lifetimeはextentとregionをごちゃまぜにした語だから
lifetimeに言及してる部分は実際にはextentの話かregionの話に分かれる。
だからextentとregionを理解すればいいよ。
特にscopeとextentの区別がついてないやつが非常に多いからそこ気をつける。

528:デフォルトの名無しさん
17/08/10 23:40:15.73 +tFBM5sG.net
何かextentとregionを説明したものってある?

529:デフォルトの名無しさん
17/08/11 00:54:12.71 XZrwY8EL.net
>>517
extentはscopeとよく一緒に説明されるからそこら辺で検索。
言語によってはextentの事をlifetimeと呼ぶから
そういう言語のlifetimeを詳しく解説してる本とか当たってもいい。
ただし、rustのextentとregionを混同したlifetimeの事と
extentをlifetimeと呼ぶ文化におけるlifetimeの区別は
事前にちゃんと付けておいたほうがいいね。
rustのlifetimeは無駄にややこしくしてるから頑張って。
regionの説明はほとんど見かけないから近道は論文読む。
実装ならRTSJとCycloneくらいしかない。
region理解するならzone/arena(両方同じもの)とリージョン多相とリージョン推論も理解した方がいい。
あとrust固有の話だとrustのリージョン多相は部分多相も備えてる。

530:デフォルトの名無しさん
17/08/11 01:38:14.07 KiXisjXW.net
無駄に話を複雑にした挙句論文を読めときたか、少し前にいたイキリ大学生かよ
普通に公式のThe Rust Programming Languageを読んで現行Stringを使ってるなら&strにして組み直して見たら?
structのメンバに参照があると否応でも意識/理解せざるを得ないと思うぞ

531:デフォルトの名無しさん
17/08/11 05:26:24.27 oTwda99v.net
>>519
いざ言われてみるとstructで参照を持つのってどんなときか思いつかんのだけど

532:デフォルトの名無しさん
17/08/11 07:59:32.16 KiXisjXW.net
じゃあまずlifetimeについて考える前に、参照のメリット/デメリットについて考えような
公式サイトのドキュメント読んでこい

533:デフォルトの名無しさん
17/08/11 09:42:12.68 oTwda99v.net
c++だと参照保持すると生存期間管理ないからあぶないからやらない
スマートポインタ使う
そのへんの感覺の違いがまだなれない

534:デフォルトの名無しさん
17/08/11 13:31:10.83 wKLRpp+C.net
impl Traitがstableに入ったらどうなるか分からないけど、MapとかFilterとかがstructに参照+独自データって形になってるよ
あとはCharIndicesとか。実際のソースはちょいと違うけど元のデータへの参照+と現在位置っていう形になってる

535:デフォルトの名無しさん
17/08/11 23:09:32.05 wLCu2iAZ.net
昨日Slackに参加した人たちはお前らって認識で合ってる?

536:デフォルトの名無しさん
17/08/11 23:41:41.62 lyr4XUnD.net
ようはfat pointerでしょ

537:デフォルトの名無しさん
17/08/12 12:16:25.41 IzeoJwWv.net
コンパイル済みのバイナリパッケージを公開してほしいけどそういうのは実現可能ではない?

538:デフォルトの名無しさん
17/08/12 18:35:23.01 dKEWL6WP.net
例えばripgrepのコンパイル済みのバイナリパッケージ
URLリンク(github.com)
リリースビルドしたバイナリをzipなりでパッケージングすれば良いんでね

539:デフォルトの名無しさん
17/08/12 21:37:32.89 YDSzcZF8.net
Pathがすげー使いづらいんだけどなんでなの

540:デフォルトの名無しさん
17/08/12 22:36:26.03 4PGg+vlK.net
>>528
具体的にどのあたりが使いづらいと思っているの?

541:デフォルトの名無しさん
17/08/12 22:57:47.92 Lzx+EbMy.net
>>527
cargoにそんな感じのサブコマンドあった気がする

542:デフォルトの名無しさん
17/08/13 04:17:55.12 oa7ekDLN.net
PathはPath::new(&str)が参照を返すから使いづらい(参照を使いこなせない)
PathBuf使えば楽になったよ!

543:デフォルトの名無しさん
17/08/13 08:43:10.09 f+gGM+v+.net
>>529
返り値で返せないとか
PathBufすると変換いるしめんどい
引数の文字列のライフタイムで怒られる
とか

544:デフォルトの名無しさん
17/08/13 13:14:25.96 3acTHEGf.net
>>532
>返り値で返せないとか
>引数の文字列のライフタイムで怒られる
fn file_stem<'a, P: AsRef<Path>+?Sized>(path: &'a P) -> Option<&'a OsStr> {
let path = path.as_ref();
path.file_stem()
}
これじゃダメ?
>PathBufすると変換いるしめんどい
to_ownedやintoするのもめんどくさけりゃ、もう死んでしまえ

545:デフォルトの名無しさん
17/08/13 13:51:20.44 TkYKFb/H.net
こんな使いづらさでしょ
fn path<'a>(name: &str, ext: &str) -> &'a Path {
Path::new(&format!("{}.{}", name, ext))
// error[E0597]: borrowed value does not live long enough
}
まぁこれも死んでしまえ事例ではあるが
別所にOsStrの所有権(ライフタイム)がある場合に参照だけで済ますためのPathなので
動的に生成したOsStrでPath(参照)だけを返せると思うなよバーカというね

546:デフォルトの名無しさん
17/08/13 13:56:05.57 LyaOwRfj.net
>>533
いきなりドラえもんになるのやめろ

547:デフォルトの名無しさん
17/08/13 16:54:45.71 4uuls5D8.net
impl Traitっていつstableはいるんだっけ?

548:デフォルトの名無しさん
17/08/13 22:34:46.55 3acTHEGf.net
>>536
特に時期は決まってないはず
少なくとも次のstableではない

549:デフォルトの名無しさん
17/08/13 22:46:00.09 r6u293xs.net
owned valueとborrowed valueの区別がついてないだけじゃん

550:デフォルトの名無しさん
17/08/13 23:14:52.73 3acTHEGf.net
まあ、Sizedと!Sized (DST)の区別がつきづらいってのもあるとは思う
strとString然り、[T]とVec<T>然り、OsStrとOsString、トレイトオブジェクト、そしてPathとPathBuf……

551:デフォルトの名無しさん
17/08/14 01:43:35.30 tyQzDLaM.net
アマグラマの書き散らした名前空間みたいできついな

552:デフォルトの名無しさん
17/08/14 07:06:13.75 HJwH3qkh.net
>>538-539
それらが区別はついても
その上でライフタイムを理解してないと使いづらいという話じゃないの
>>534なんかはPathがborrowed valueで!Sizedなのは分かった
それはそれとしてPathのまま返すにはどうしたらいいの?って
ライフタイムをきちんと理解してない初学者は躓くわけじゃん

553:デフォルトの名無しさん
17/08/14 09:35:01.13 59zJ3Di9.net
>>541
>Pathのまま返すにはどうしたらいいの?
ライフタイムとか関係なく、!Sizedな型はそのまま返すなんてことはできない
コンパイルタイムにサイズが分からないからランタイムでサイズ情報を持つfat pointer経由でしか扱えない
URLリンク(doc.rust-lang.org)
所有権を持った値として返したいのならそのownedなバージョン(今回はPathBuf)かボックス化された状態(PathBuf::into_boxed_pathで得たBox<Path>)を使うしかない
ああ、>>532の「返り値で返せないとか」の意味がようやく分かった。確かにその通りだ。別の型で返す必要がある

554:デフォルトの名無しさん
17/08/14 09:54:46.27 HJwH3qkh.net
ええぇ、今までPathが返り値で返せないの意味を分かってなかったのかw
!Sizedな型は+Sizedとかで型サイズを固定させて返すとか頑張るんでしょ、Pathは出来なかった気がするけど
PathBufはDeref type Pathがあるからまぁなんとか
str, String等の命名規則がStr, StrBufじゃないのは気に入らん、みたいなのは分からいでもない
なんか歴史的背景があるんだろうけど、考えるのが面倒でそのまま受け入れてる

555:デフォルトの名無しさん
17/08/14 09:56:58.67 3NSMgreF.net
習いたての頃に[u8]を引数に取ろうとして躓きまくったのを思い出す
そういやこれって何でわざわざコンパイラー組み込みでファットポインターを定義してるんだ?
struct Path<'a> { start: *mut (), end: *mut (), marker: PhantomData<&'a PathBuf> }じゃダメなのか?

556:デフォルトの名無しさん
17/08/14 10:30:03.78 59zJ3Di9.net
>>544
それだとimpl AsRef<Path> for PathBufとかが出来ない

557:デフォルトの名無しさん
17/08/14 10:53:05.45 fyv2iRf4.net
PathがSizedじゃないってのが初学者的にめんくらったわ
strと同じだと思えば理解できた

558:デフォルトの名無しさん
17/08/14 10:54:47.32 fyv2iRf4.net
>>537
nightlyって1.21って出るけどそこに入るわけじゃないのね

559:デフォルトの名無しさん
17/08/14 15:20:15.52 xd4YqYEd.net
>>542
いかにもRust FAQに載ってそうな話題だと思ったが、ちらっと見た感じ、載ってないな
和訳も1割ぐらいしか進んでないし

560:デフォルトの名無しさん
17/08/15 01:22:49.60 Kx+225Ge.net
>>541
>>542の言うとおりそこはライフタイム関係ないから
デフォルトがムーブセマンティックスで、
借用はsubstructural type systemに守られてるってこと覚えたらライフタイム知らなくても分かる。
>>547
特に決まってないよ。
nightlyの途中でマージされたのがいきなり次のstableに入ることもあるし。

561:デフォルトの名無しさん
17/08/15 05:20:52.55 qX6sO+hu.net
&Pathを関数戻り値で返せないのにライフタイム関係ないって子たちはエラー内容見えないのか
// error[E0597]: borrowed value does not live long enough
サマリーだけでlifetime関係ないって思い込んでるならE0597の詳細見て理解しような
URLリンク(doc.rust-lang.org)

562:デフォルトの名無しさん
17/08/15 05:38:14.01 tN8D0FqC.net
ちょっと聞きたいんだけどrustのマクロって裏でどういうコードが生成れてるか分かる機能ってあります?
Cのプリプロセッサなら生成コードが出力できるけど、、、

563:デフォルトの名無しさん
17/08/15 09:18:04.23 cM0t4sQL.net
Webにいるプログラマって、マサカリとかに代表されるように人格が狂ってる人多いよね。正しければ正義的な。
2ちゃんはさらにひどいけど、そうじゃなくても。
実社会でプログラマの地位が認められてないからかなぁ。

564:デフォルトの名無しさん
17/08/15 09:27:06.48 O7/Y4aw2.net
>>550
&PathじゃなくてPathを返すって話だよ
Path: !Sizedだから参照を経由しない形では返せない(fn() -> Pathと書けない)というお話ね
>error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path`
こういう流れを見ると本当にDSTは理解されづらいんだなあと思う
>>551
Nightlyで、rustc -Z unstable-options --pretty=expanded foo.rs
これのラッパとしてcargo-expandというものもある
URLリンク(github.com)

565:デフォルトの名無しさん
17/08/15 09:32:50.69 qX6sO+hu.net
Path:newが&Pathを返すというstdライブラリ仕様を言及してたのかよwww
そりゃ失礼、そんな所よりそれをどうやって使うかを話してるつもりだったわ

566:デフォルトの名無しさん
17/08/15 17:22:31.52 bUHuOZJE.net
newがPathを返すと思ってたわ
あはは

567:デフォルトの名無しさん
17/08/15 17:26:22.04 L9Yq17PV.net
あはは

568:デフォルトの名無しさん
17/08/15 18:11:07.59 qRVErxIb.net
あはははは

569:デフォルトの名無しさん
17/08/15 18:12:13.59 wgr8KXHg.net
もしかして他にもnewで&返すのあるの?

570:デフォルトの名無しさん
17/08/15 18:29:55.70 MDS+g102.net
ワロス

571:デフォルトの名無しさん
17/08/15 18:34:48.29 O7/Y4aw2.net
>>558
標準ライブラリのパブリックな型ではOsStrくらいじゃないかな
from系の関数も含むのなら、std::slice::from_raw_partsとかstd::str::from_utf8とかもある
標準ライブラリ外のクレートでもstrに対するラッパとかでそういうのがあった気がする

572:デフォルトの名無しさん
17/08/16 01:13:42.55 lhJRoj0R.net
>>554
オレも値受け取った後の話だと思ってたわ

573:デフォルトの名無しさん
17/08/16 01:18:30.66 lhJRoj0R.net
ごめん言い忘れたぜ。
>> 558
fn new<S: AsRef<T> + ?Sized>(s: &S) -> &Self
に一般化出来るの全部。transmuteしてるだけだもん。

574:デフォルトの名無しさん
17/08/16 01:35:45.19 Vj5dC5z1.net
>>562
これ系の実装がやたら低レベルなのってどうにかならんもんなのかねえ……

575:デフォルトの名無しさん
17/08/16 03:04:04.19 Tcbyhi06.net
とは言え、Pathみたいにnewtypeパターンでnewtypeの元の型の参照からnewtypeの型の参照を得るケースなんてそう多くないからな(というかDSTくらいでしかやらない)
transmuteもやむなしだろう

576:デフォルトの名無しさん
17/08/16 04:03:28.36 1RQ5dDrL.net
newなんて普通過ぎる名前が悪い
sliceよろしくfromにしておけばよかったんだ

577:デフォルトの名無しさん
17/08/16 07:12:51.51 Ip1XZB1d.net
>>551
URLリンク(rust-lang-ja.github.io)マクロをデバッグする
> マクロの展開結果を見るには、 rustc --pretty expanded を実行して下さい。

578:デフォルトの名無しさん
17/08/16 10:55:53.36 Agtz0DvI.net
IntelliJ Rust Pluginのエディタが型表示をヒントとして表示するようになってクッソウゼェw
一瞬便利かなと思ったけどやり過ぎだと思ってオフにしたった
futuresでチェーンしてると型名が長すぎて実態のコードが画面外に追いやられてたわ
変数名にフォーカスしたら型名表示くらいのFRやPRは出てないものかしら

579:デフォルトの名無しさん
17/08/16 11:05:25.77 s5nUB7nh.net
>>567
その機能を持ってきたJavaだと型名が短いからいいんだけどね

580:デフォルトの名無しさん
17/08/16 11:50:59.59 11a+64I1.net
みんな何でRust書いてるの?IntelliJ派?

581:デフォルトの名無しさん
17/08/16 17:55:39.36 5vWhS1NV.net
emacs

582:デフォルトの名無しさん
17/08/16 17:56:12.79 Vj5dC5z1.net
Vim一択

583:デフォルトの名無しさん
17/08/16 17:58:42.50 5vWhS1NV.net
Path(PathBuff)に拡張子を追加するにはどしたらいいすか
f.txtをf.txt.zipにするてきな。

584:デフォルトの名無しさん
17/08/16 18:27:36.87 ObQbU6V8.net
ggrksなので雑に答えてみる
let path = Path::new("f.txt");
let new_name = format!("{}.{}", path.to_str().unwrap(), "zip");
let new_path = Path::new(&new_name);
print!("{:?}", new_path);
これ以上雑な実装はねーだろ(チラッチラッ

585:デフォルトの名無しさん
17/08/16 18:47:37.19 U6ziTncO.net
やっぱそーなっちゃうんですねー。
ありがとうございました。
さすがにこれ以上エレガントなのはないですね

586:デフォルトの名無しさん
17/08/16 18:48:57.93 Vj5dC5z1.net
元から&mut Stringや&mut OsStringを持っていてそれを&Pathに変換するような場面なら、素直にStringやOsStringの時点でpushとかで加工した方が手軽だと思う
OwnedなPathBufしか持っていないのなら一旦OsStringに変換してから拡張子を足してPathBufに戻す
&Pathや&strしか持っていないのなら、そもそもその状態では書き換えようがないからto_ownedする
&mut PathBufしか持っていないのなら、多分設計が良くない。&mut OsStringを受け取れるようにできないか検討しよう

587:デフォルトの名無しさん
17/08/16 19:03:14.68 PvRs7uXf.net
エディタわりとバラバラなのな
俺はVimだけど何となく気になった

588:デフォルトの名無しさん
17/08/16 19:22:40.51 ObQbU6V8.net
来るかなぁと思ってたが、案の定エレガントじゃない回答(>>575)がきたぞw
卓上で語るのが好きでコードに落とせない子なんだろうなぁ
>>575はそのバリエーションで実装に落としてあげるとエレガントな回答になるからちょっとやってみ?

589:デフォルトの名無しさん
17/08/16 19:42:34.81 Vj5dC5z1.net
>>577
1番目
fn f(path: &mut OsString) -> &Path {
path.push(".zip");
Path::new(path)
}
let mut path = "f.txt".into();
assert_eq!(Some("f.txt.zip"), f(&mut path).to_str());
2番目(assertionは省略)
fn g(path: PathBuf) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}
3番目
fn h(path: &Path) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}
ついでに4番目(実際に使うべきでないが)
fn i(path: &mut PathBuf) {
unsafe {
(*(path as *mut _ as *mut OsString)).push(".zip")
};
}

590:デフォルトの名無しさん
17/08/16 19:56:17.83 YfsrWVwz.net
めちゃくちゃエレガントになったな(白目)

591:デフォルトの名無しさん
17/08/16 20:11:43.78 ObQbU6V8.net
1~3がすごく無駄なバリエーションでワロタ
まとめてこれでいいじゃん, 分けて挙げた意味あるのかいな
let path = f(PathBuf::from("f.txt"));
let path = f(Path::new("f.txt"));
let path = f(OsString::from("f.txt"));
fn f<P: AsRef<Path>>(path: P) -> PathBuf {
let mut path: OsString = path.as_ref().into();
path.push(".zip");
path.into()
}

592:デフォルトの名無しさん
17/08/16 20:16:19.25 eiUsQzcr.net
cloneする奴としない奴を同列に語るのはどうなんだって感じだがな

593:デフォルトの名無しさん
17/08/16 20:18:00.24 ObQbU6V8.net
4を頑張れば>>573を超える雑な実装にできる可能性がありそうだけど無理かなぁ
まぁ無理か・・・

594:デフォルトの名無しさん
17/08/16 20:27:22.87 eiUsQzcr.net
つまり、雑さ選手権であると言う事を見落とした事が>>575の敗因か()

595:デフォルトの名無しさん
17/08/16 20:36:20.89 8AGyDDIv.net
PathBuf::pushじゃいかんのか
let buf = path.to_parh_buf();
buf.push(".zip");
buf.as_ref()
一番良いのはPathの元になったOwnedな型にpushすることだと思うが

596:デフォルトの名無しさん
17/08/16 20:36:47.76 8AGyDDIv.net
let mut にするの忘れた

597:デフォルトの名無しさん
17/08/16 20:38:34.55 Vj5dC5z1.net
let mut buf: PathBuf = "f.txt".into();
buf.push(".zip");
println!("{:?}", buf); // => "f.txt/.zip"

598:デフォルトの名無しさん
17/08/16 20:38:39.16 ObQbU6V8.net
>>581
関数f内でのPath/PathBufのメモリ確保処理に差はないから必要なら後から


599:as_pathでもしたらいいんじゃね むしろas_refやintoのオーバーヘッドを気にすべきかのう, 100万回くらいループしたら1秒くらいの差が出るかも?



600:デフォルトの名無しさん
17/08/16 20:39:36.49 8AGyDDIv.net
失礼、PathBuf.pushだと/がついてしまうのか

601:デフォルトの名無しさん
17/08/16 20:44:06.60 kNGkTZBw.net
だれも>>550に肝心なこと言ってやらないのな。
>>550
関数が&Path返すだけじゃE0597はでねぇのよ。たとえば>>534のは
>fn path<'a>(name: &str, ext: &str) -> &'a Path {
>Path::new(&format!("{}.{}", name, ext))
>}
&format!("{}.{}", name, ext)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
この中でnameとextをdropするからE0597出るんだよ。
まあ、罠だけど。ただの面倒くさいっていう見本みたいだし。
借用を関数の中で結合して返すってのが潜在的に危険だから
やり様は色々あるけど↓が一番簡単。
URLリンク(play.rust-lang.org)
>>563
無理、rustはこういう型シノニムを構造体でラップしたfat pointerとして定義するからtransmuteは必要になる。
こういうnewtypeがやりたいのはunsafe消すこと。
名前からtransmuteしてるようには見えないから名前が悪いのよ。
>>565
from/intoは使い方決まってる

602:デフォルトの名無しさん
17/08/16 20:45:56.00 eiUsQzcr.net
>>587
Path::newやas_ref、intoは単に型システム上の操作であってnoopなのでは(検証してない)
だってPathやらPathBufやらはOsStrやOsStringに対する単なるnewtypeでしょ

603:デフォルトの名無しさん
17/08/16 20:54:34.33 8AGyDDIv.net
let mut buf = PathBuf::from("hoge.txt");
let mut ext = buf.extension().map(OsString::from).unwap_or(OsString::new);
ext.push(".zip");
buf.set_extension(&ext);

604:デフォルトの名無しさん
17/08/16 21:03:54.32 8AGyDDIv.net
>>590
Path::into::<PathBuf>はstr::into::<String>と同じでメモリアロケーション走るはず
as_refはほぼnoop

605:デフォルトの名無しさん
17/08/16 21:07:58.66 ObQbU6V8.net
fn f<T: Trait>(t: T) のトレイトによる分岐はnoopだけど、as_ref, intoはnoopとは限らんよねぇ
impl AsRef, Intoの実装でゴチャゴチャ処理するモノもあるだろうし
Path, PathBufに限ってはinnerを返すだけっぽいからコンパイラによる最適化でnoopになるかな
2,3回前のリリースでもコンパイラ最適化を抜本見直ししてたし、どうなってるかワカラン(自分も検証する気ない)

606:デフォルトの名無しさん
17/08/16 21:51:24.68 8AGyDDIv.net
AsRefはcheapな型変換を実装するためのtraitだし、as_refは常にほぼnoopだと言って良いと思う
URLリンク(doc.rust-lang.org)

607:デフォルトの名無しさん
17/08/16 22:57:30.93 Agtz0DvI.net
雑に拡張子生成部のワンライナーを目指した(改行がないとは言っていない
let new_ext = ".zip";
let mut buf = PathBuf::from("hoge.txt");
let ext = buf.extension()
.map(OsString::from).map(|mut ext| {ext.push(new_ext); ext})
.unwrap_or(new_ext.into());
buf.set_extension(&ext);

608:デフォルトの名無しさん
17/08/17 18:40:58.78 8HfS9wXv.net
std::path::Componentsのimpl AsRef<Path>みたいな地雷もいるけどな! > as_refがnoop
地雷を踏み抜かないように使いたい所存

609:デフォルトの名無しさん
17/08/18 18:00:28.47 XVXUXs+1.net
メンバ変数の参照を返すイテレータモドキ
URLリンク(play.rust-lang.org)
これに Iterator トレイトを実装させたいのだが、関連型 Item の定義が上手く行かず困っている。
関連型について
type Item = <&T>; とするとライフタイムが必要だと出る。
しかし
impl<'a, T> Iterator for Foo<T> {
 type Item = Option<&'a T>;
...
とか
PhantomData 使ったりしてみた URLリンク(play.rust-lang.org)
けど通らない。
どうすれば良いのだろう?

610:デフォルトの名無しさん
17/08/18 18:05:55.69 XVXUXs+1.net
ミス。
> type Item = Option
の Option<> は要りません。

611:デフォルトの名無しさん
17/08/18 18:07:34.29 LVQKp7rQ.net
>>597
impl<'a, T> Iterator for &'a Fooじゃダメな理由とかある?

612:デフォルトの名無しさん
17/08/18 18:17:10.82 XVXUXs+1.net
impl<'a,T> Iterator for &'a Foo<T> {
type Item = &'a T;
fn next(&mut self) -> Option<&T> {
Some(&self.x)
}
}
これはこれで error[E0495]: cannot infer an appropriate lifetime for lifetime parameter in generic type due to conflicting requirements
エラーが出ます。

613:デフォルトの名無しさん
17/08/18 18:20:10.90 LVQKp7rQ.net
>>600
nextの戻り値のlifetimeが不足している
Option<&'a T>にしなくちゃ

614:デフォルトの名無しさん
17/08/18 18:35:09.68 XVXUXs+1.net
>>601
おお、出来ました! ありがとうございます。
a.next() ではなく (&a).next() となってしまうのが心残りです。
関連型 Item のライフタイム問題が無ければ素のコードで行けるのに、
何故こんなことになってしまうのか……

615:デフォルトの名無しさん
17/08/18 19:24:37.05 LVQKp7rQ.net
>>602
Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある
>>597のコードで動かないのは、Iterator::nextのレシーバのライフタイムが匿名だからself.xが後で書き換えられるのを防げないことによるものだろう
Iteratorトレイトの仕様上、仕方がない

616:デフォルトの名無しさん
17/08/18 19:31:38.24 zUkt3uOb.net
ていうかあんまり本質的な問題ではないけどtakeを使うべき場面だな

617:デフォルトの名無しさん
17/08/18 23:23:26.21 68PBtc02.net
Rustの2017年ロードマップの進捗状況
URLリンク(www.infoq.com)

618:デフォルトの名無しさん
17/08/19 00:07:19.34 gC1uMiLY.net
>>592-594
変換系の命名規則はコストで決まってる。
URLリンク(rust-lang-nursery.github.io)
ただまだ質が悪いから準拠してこうぜ!ってのが2017のロードマップ。

619:デフォルトの名無しさん
17/08/19 04:06:47.11 eOOMhS38.net
何で皆さんそんなにコピーがお嫌いなんですか

620:デフォルトの名無しさん
17/08/19 08:31:32.98 BpKw1nHe.net
Copyは良いがCloneは避けたい
Cloneどんどんやって良いようなプログラムならrustで書かなくても良い

621:デフォルトの名無しさん
17/08/19 10:50:48.03 5Hm4My/o.net
>>603
> Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある
Slice のコードを参考にしてみた結果、Some(&v) じゃなくて Some(&*ptr) という unsafe な手法ですが、こんな感じで上手く行きました。
URLリンク(play.rust-lang.org)
ありがとうございました。

622:デフォルトの名無しさん
17/08/19 10:56:56.32 i5Fk1Iv8.net
copyとcloneの違いって?

623:デフォルトの名無しさん
17/08/19 14:19:36.24 zLcrLAmh.net
error-chainのまともなサンプルがないんだけど、みんな使ってないのかな

624:デフォルトの名無しさん
17/08/19 14:23:54.00 FnHzgZW7.net
crates.ioのreverse dependenciesが10ページを超えているようなcrateを「みんな使ってない」はずがない
GitHubのexamplesでなんやかんや事足りるからなあ

625:デフォルトの名無しさん
17/08/19 14:28:59.69 IJZoKA+S.net
「Notepad++」v7.5が公開、“LaTeX”や“Rust”、“Erlang”など19言語をサポート
URLリンク(forest.watch.impress.co.jp)


626:6002.html



627:デフォルトの名無しさん
17/08/19 15:21:50.70 sXEKiJ8x.net
error-chainてメインでしか使えない?

628:デフォルトの名無しさん
17/08/19 15:24:47.15 sXEKiJ8x.net
日本語の記事もほぼないし

629:デフォルトの名無しさん
17/08/19 15:47:44.15 nyFhS1vK.net
テキストエディタも高機能な奴は起動が遅かったり動作が重い印象がある

630:デフォルトの名無しさん
17/08/19 16:40:03.65 pL/zMRBl.net
>>611
error-chain、なんか使いにくそうと勝手に思い込んでる

631:デフォルトの名無しさん
17/08/19 16:53:30.74 FnHzgZW7.net
>>615
むしろ、Rust界隈でまともな日本語記事とやらがどれだけあるのやら……

632:デフォルトの名無しさん
17/08/19 23:55:33.96 nyFhS1vK.net
>>613
Notepad++ってちょっと重い。SakuraEditorより重いと思う。あとSDIで使えなかった気がする

633:デフォルトの名無しさん
17/08/20 00:02:30.31 oGIfVBlS.net
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

634:デフォルトの名無しさん
17/08/20 15:00:56.50 pZQ2byHx.net
標準的なステーメントや型、メソッドなどがずらずら並んだ資料とかないのかな
エディタ用に定義ファイルを作りたいのだがLearning的なページだと全部載っていなくて・・・


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch