Rust part9

■ このスレッドは過去ログ倉庫に格納されています
2020/08/23(日) 01:07:35.52ID:MgEpWwVh
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 part8
https://mevius.5ch.net/test/read.cgi/tech/1579834072/
2020/08/23(日) 10:31:18.31ID:WHl934bN
Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
2020/08/23(日) 12:12:13.82ID:vopEnHQM
いちおつ
2020/08/23(日) 13:15:25.53ID:jbA8Vxfm
最近は初学者向けの文書も充実してきてるね

Tour of Rust
https://tourofrust.com

Rust explained using easy English
https://github.com/Dhghomon/easy_rust
2020/08/23(日) 15:24:56.55ID:dfu3xBf1
http://zsiciarz.github.io/24daysofrust/index.html
今これ読んでる
2020/08/24(月) 02:54:03.17ID:ko9AntT7
日本語でおけ
7デフォルトの名無しさん
垢版 |
2020/08/24(月) 03:09:08.38ID:gAClNVkQ
web_sys使って意図的にHTML食わせてDOM操作とかしたいんだけどこれって出来ない?
https://docs.rs/web-sys/0.3.44/web_sys/
2020/08/25(火) 22:04:20.93ID:cBDpP6RF
>>7
rustからDOM叩くのはバインディングさえ用意すれば出来るけど"意図的にHTML食わせて"の意味がわからん。
9デフォルトの名無しさん
垢版 |
2020/08/26(水) 09:25:11.81ID:zXQp5MBn
>>8
HTMLのテキストをDocument::from(&html_text)みたいに読ませて、そこからDOM操作してDOMのvalueとかattrとか読みたい。
他のHTMLパーサーは規格がバラバラだからweb_sys使いたい
2020/08/26(水) 09:37:17.33ID:4U25QJJo
>>9
DOM操作なんかしないで、これ使おうぜ
https://github.com/tanakh/easy-scraper
2020/08/26(水) 10:49:33.15ID:goOahd89
>>10
それkuchikiをそのまま使うのに比べてどういうメリットがあるの?
css selectorで指定できたほうが簡単で柔軟だと思うんだけど

>>9
HTMLパーサーの有名どころは、scraper, select, kuchikiの3つだけど
どれも内部的にservoのhtml5everを使ってるから一緒じゃない?
12デフォルトの名無しさん
垢版 |
2020/08/26(水) 14:28:06.12ID:zXQp5MBn
easy-scraperは個人的に仕様がダサいと思う

>>11
web_sysのドキュメント見たら分かるけど、APIがかなり豊富でMDN遵守してるし、wasmにも移管できる。
その三つは楽だけどそれ以外はweb_sysの方が良いから
2020/08/26(水) 15:34:22.88ID:goOahd89
>>12
wasmにも移管できるって、web-sysはwasm前提だと思うんだけどwasm以外で使えるの?
2020/08/26(水) 17:13:59.22ID:Yn/rXsvn
>>12
ダサいといえばダサいんだが、綺麗さより楽さを取ったデザインって感じの話が作者のブログに書いてあったよ。
2020/08/26(水) 21:28:36.70ID:mE3MiLfN
>>9
whatwg DOMにDOM Level3 Load & Saveがないから今のDOMで外部ファイルのパースはできない。
適当なAPIでファイル読んでwasmにコンパイルした他のDOM Level3実装に食わせればいい。
rustで書かれたDOM Level3実装が見当たらないから他言語になるかな。

whatwgのDOMはesからhtml操作する以外は考えてないから、そういう事したいなら他でやるしかないね。
16デフォルトの名無しさん
垢版 |
2020/08/26(水) 22:06:03.86ID:JjGrRnat
綺麗に作れないから自分が楽な設計をしたというだけ
アラフォープログラマにありがちな言い訳
2020/08/27(木) 02:24:33.81ID:yLQzP5wb
無能の僻みかな
2020/08/27(木) 03:10:08.73ID:MrnqDky1
>>16
「楽な」は「楽に使える」という意味だぞ。
綺麗な設計を捨てる方が作るのは大変に決まっとろうが……。
19デフォルトの名無しさん
垢版 |
2020/08/27(木) 04:23:21.10ID:FQ07KrIG
>>13
ごめん、そこらへん認識甘いかも
wasmのランタイムじゃなくて、普通にrustcでも動くんじゃない?

>>15
そうなんだ、貴重な情報ありがとう。
20デフォルトの名無しさん
垢版 |
2020/08/27(木) 08:43:15.31ID:bHW4ZDaj
>>18
そう主張してるが本人が楽なだけ
2020/08/28(金) 01:00:10.14ID:LEZPXhgF
easy-scraperのブログみて試しにkuchikiでやってみたけどドキュメントがなさすぎてkichikuだった

次はscraperにする
2020/08/28(金) 10:56:42.59ID:kaNWPz+d
今月の新機能 Option::zip の使いどころが分からない
こんなの要らないだろ
https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.zip
23デフォルトの名無しさん
垢版 |
2020/08/28(金) 15:11:57.10ID:AUb/6LnR
使うならOption版の論理演算とかかな
2020/08/28(金) 23:01:39.34ID:LEZPXhgF
the bookの分かりやすい更新履歴みたいのってある?

1度読み終わって以降に新しく追加された章や節がないかを確認したいんだけど
githubのcommitログ眺めていく以外の現実的な方法が見つからなくて困ってる
2020/08/29(土) 00:41:53.30ID:JtEdK3mn
>>22
cons cellにしてからflatするの面倒くさい。
俺はvec::Drainをas_sliceする用途がよくわからん。ただの変換用だろうか。

こっちの互換性残ってよかった。
ttps://github.com/rust-lang/rust/pull/74150/
2020/08/29(土) 17:57:40.88ID:6ekcNRq6
anyhowとthiserror 初めて知ったわ
std::Errorが便利になるまではこれ使っとけばよさそうだね
2020/08/29(土) 22:59:59.85ID:CxDsroMX
とっくにfailureのフィードバック終わってるけど、ver古くない?
2020/08/29(土) 23:02:55.48ID:MYuD75tc
結局今は何使うべきなの?
std::Error? failure? anyhow?
2020/08/30(日) 03:03:14.91ID:A+BfCyCQ
@rustlangって日本語のRTもするのか
機械翻訳で読んだのかな
30デフォルトの名無しさん
垢版 |
2020/08/30(日) 11:07:07.53ID:YXE1VqL6
いつになったらベンチマークStableにすんだよな
2020/08/30(日) 18:03:13.46ID:nkt3Z4R5
ベアメタル用のコードを-C opt-level=0でコンパイルして乗算のオーバーフローチェック等のpanic機構って使用できる?
アセンブラリストを出力すると存在しないラベルの分岐命令が出力されるんだが正常な動作なのか・・・
3231
垢版 |
2020/08/30(日) 18:53:07.92ID:nkt3Z4R5
例えばこんな感じ
ttps://uploader.purinka.work/src/17641.png
callqの行き先が不明
2020/08/30(日) 19:51:29.80ID:03fMpyFE
--emit asmってlibcoreとリンクしたもの吐くの?
リンクされてないだけでここ呼んでるだけな気がする
https://github.com/rust-lang/rust/blob/1.46.0/src/libcore/panicking.rs#L39
2020/08/30(日) 22:35:01.08ID:vWRii7PY
>>28
failureは役目を終えた。std::error::Error,thiserror,anyhowでfailure相当になる。
最近はenumxのcexで静的例外風にかけるけど。

>>31-33
panic_handlerを書いた覚えがないなら自分で書く。stdにはデフォルトの実装が用意されてる。
The Embedded Rust Bookに詳しく書いてあるから、rustupでローカルにダウンロードしてrustup docで開ける。

emitだとコンパイルまでしかしない。依存先すらコンパイルしてなかったと思う。
3531
垢版 |
2020/08/30(日) 23:57:14.44ID:mEmNBl/k
サンキュ

>>33
ビンゴだった。でも欲しいのはアセンブルリストなのでlibcoreを含むリストをどう入手するかが課題です
objdumpだと元のソースコードの行数等のデバッグ情報が失われるみたいだしグローバルの有無等の取得方法も判らないし
そもそもgasフォーマットじゃないから見方が判らないところがあるし

>>34
panic_handlerを自分で書きたいのはヤマヤマですが記述例が見つからず棚上げ状態です
ttps://rust-embedded.github.io/book/start/panicking.html
は見ていますが記述例は見あたりませんし
36デフォルトの名無しさん
垢版 |
2020/08/31(月) 08:19:34.04ID:DTQYV4xt
ターミナル上で色つけるのとテキストポジションを決めたいだけの簡単なTUIアプリ作りたいんだけど、有名なTUIクレートが多くて迷ってます。
適切なクレートが何か分かる方教えてください。
2020/08/31(月) 10:44:07.07ID:8VYSRGWn
複雑なことしないなら termion

なんてどう?
38デフォルトの名無しさん
垢版 |
2020/08/31(月) 20:17:03.77ID:DTQYV4xt
>>37
ありがとうございます。一度見てみます。
2020/08/31(月) 22:50:36.76ID:hNA5PDaQ
>>35
英語読めないって話?
>A behavior can be chosen by declaring a #[panic_handler] function. This function must appear exactly once in the dependency graph of a program, and must have the following signature: fn(&PanicInfo) -> !, where PanicInfo is a struct containing information about the location of the panic.
>Given that embedded systems range from user facing to safety critical (cannot crash) there's no one size fits all panicking behavior but there are plenty of commonly used behaviors. These common behaviors have been packaged into crates that define the #[panic_handler] function. Some examples include:
40デフォルトの名無しさん
垢版 |
2020/09/01(火) 00:12:49.85ID:OUJLkiQD
MirakurunクローンのmirakcってRustでかかれてるのか

ソースちょっとのぞいてみたけどサッパリだった
41デフォルトの名無しさん
垢版 |
2020/09/01(火) 00:14:06.84ID:pQTVtNeX
よく作れるよなあ
2020/09/01(火) 00:23:01.46ID:TpxWZL4k
>>35
記述例が見たいならそこからリンクされてるpanicハンドラクレートのソースを見ればいい。
例えばこれとか。

https://github.com/japaric/panic-abort/blob/master/src/lib.rs
2020/09/02(水) 00:14:27.98ID:I/VQ/2li
>>42
そうじゃなくて
>Given that embedded systems range from user facing to safety critical (cannot crash) there's no one size fits all panicking behavior
の意味がわからないんだろう。ベアメタルで人の書いたpanic handlerの中身なんて読んでも意味ないし。
4431
垢版 |
2020/09/02(水) 08:06:57.73ID:s4/GEX11
>>42
それだと基本的に>>32と大差なく見えるというかリンク後に逆アセンブラリストを追いかけたら
最終的にfn panicへ制御が渡っている事を確認しています
>>34でpanic_handler書いていないみたいな事が書かれていたので別の書き方があるのかと・・
2020/09/03(木) 00:54:39.65ID:d+ZpNCKo
Supporting Linux kernel development in Rust
https://lwn.net/SubscriberLink/829858/281103f9c6fd0dc2/
46デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:59:41.08ID:knKXFRQt
お前らの考えとしてぶっちゃけどうよ?
今後10年でc/c++を凌駕する存在になり得るのかRustは
47デフォルトの名無しさん
垢版 |
2020/09/03(木) 14:09:27.73ID:1kMF5+E3
10年もありゃRustベースのもっといいやつが出てきそう
48デフォルトの名無しさん
垢版 |
2020/09/03(木) 14:28:37.24ID:DK3Ul6vK
Dはもう20年になるのか胸熱
2020/09/03(木) 14:49:09.48ID:p5IeVBH6
C++ 30よりは普及するんじゃないか。
(30とかどんな魔境になってるんだろうか…)
2020/09/03(木) 16:20:07.25ID:Tou2TpEC
Rust++もそこそこの魔境になるから大丈夫
2020/09/03(木) 16:22:17.40ID:Tou2TpEC
折角Edition分けしてんだし、一部後方互換性をバッサリ捨てて冗長な表現を纏めて++回避したら流行りそう
なおロードマップ見渡してもその予定は一切御座いません(笑)
2020/09/03(木) 21:15:25.18ID:303ndmJQ
Rustって未だにセルフホストできていない事に驚いた
標準添付のライブラリのビルドを試みたら
>error[E0554]: `#![feature]` may not be used on the stable release channel
等が大量に吐かれたw 要nightlyかよ
2020/09/03(木) 22:16:06.69ID:ciEvly1U
>>52
それをセルフホストできてないというかどうかは知らんがビルドしたいならx.py使えよ。
bootstrapにはそれ用のオプションがちゃんとある。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。