公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
日本語の情報
https://rust-jp.rs/
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part15
https://mevius.5ch.net/test/read.cgi/tech/1652347700/
探検
Rust part16
■ このスレッドは過去ログ倉庫に格納されています
2022/06/27(月) 08:17:03.45ID:gDlfKP6u
730デフォルトの名無しさん
2022/09/12(月) 14:30:52.03ID:o/NFQNbK731デフォルトの名無しさん
2022/09/12(月) 19:11:31.91ID:2zIjStdY >>730
変更してみた。staticlibだとpub付けても消える。rlibなら消えないようだ
とりあえずrlibにしておいてある程度形になってきたら変更すればいいか
コード自体はどっちでも大差ないだろうし
変更してみた。staticlibだとpub付けても消える。rlibなら消えないようだ
とりあえずrlibにしておいてある程度形になってきたら変更すればいいか
コード自体はどっちでも大差ないだろうし
732デフォルトの名無しさん
2022/09/18(日) 01:08:32.32ID:g4sMxKuf [u32; LEN]と[ARGB32; LEN] の件、アラインメントが違うからtransmuteの時点でUBだけど
733デフォルトの名無しさん
2022/09/19(月) 02:33:25.46ID:HMAR4dxa Tauriで動画プレーヤー的なのを作るサンプルってどっかにある?
ただ再生するデータは既存のmp4ファイルなどではなくRustプログラムから渡したい
あと再生、停止、コマ送り、シークなどの基本的な機能は実装したい
ただ再生するデータは既存のmp4ファイルなどではなくRustプログラムから渡したい
あと再生、停止、コマ送り、シークなどの基本的な機能は実装したい
734デフォルトの名無しさん
2022/09/19(月) 07:48:35.44ID:BbpMxDy4 TauriってWebアプリのサーバーサイドがRustで一体型プログラムになっているだけだろ?
そして既存のWeb技術を活かせるのがTauriの利点だろ?
そうならば例えばhls.jsなど既存の好みの動画配信再生フレームワークを使えばいいだけじゃないか?
Webサーバーサイドやったことあるならばフロントエンドからファイルに見えているものは本物のファイルである必要はなくサーバーサイドが算出していれば十分だろ?
そして既存のWeb技術を活かせるのがTauriの利点だろ?
そうならば例えばhls.jsなど既存の好みの動画配信再生フレームワークを使えばいいだけじゃないか?
Webサーバーサイドやったことあるならばフロントエンドからファイルに見えているものは本物のファイルである必要はなくサーバーサイドが算出していれば十分だろ?
735デフォルトの名無しさん
2022/09/19(月) 12:27:41.81ID:HMAR4dxa >>734
>HLS
ちょっと調べてみたけどHLSでいわゆるRAWデータを再生出来るという情報は見つけられていない
特にビデオが未圧縮データを扱えそうにない。オーディオは未圧縮FLACでいけるかもしれないけど
再生したいのがWebブラウザが対応していないデータなのでどうしようか考え中
ビデオはBMPのぱらぱら漫画でオーディオはHLSで未圧縮FLACとか?なんか無駄に実装量が増えるけど
>HLS
ちょっと調べてみたけどHLSでいわゆるRAWデータを再生出来るという情報は見つけられていない
特にビデオが未圧縮データを扱えそうにない。オーディオは未圧縮FLACでいけるかもしれないけど
再生したいのがWebブラウザが対応していないデータなのでどうしようか考え中
ビデオはBMPのぱらぱら漫画でオーディオはHLSで未圧縮FLACとか?なんか無駄に実装量が増えるけど
736デフォルトの名無しさん
2022/09/19(月) 13:11:44.57ID:PTk7Q+2G その手のやつでオーバーヘッド減らすならOS毎にネイティブ実装するしかなくない?
737デフォルトの名無しさん
2022/09/19(月) 18:38:49.00ID:EybjBREq なんとかtauri使うにしてもJSやらWASMやらで動画レンダリングするようなもの作らないとだめそう
738デフォルトの名無しさん
2022/09/19(月) 18:45:15.20ID:npVSxydm 実装を追加させない方法ってありますか?
別個に渡されたふたつの型が同じであるという制約を付けたいという目的で
以下のようなトレイト Same を定義した場合、実装を追加できてしまうと破綻してしまうので、
なんらかの方法で制限できるだろうかという疑問です。
pub trait Same<T> {}
impl<T> Same<T> for T {}
// 使用例
pub fn foo<T, U>(x: T, y: U)
where
T: Same<U>,
{
}
ちなみに目的を上述しましたけども実際には目的というよりは題材です。
つまり具体的な用途は考えておらず、質問はあくまでも「実装させない方法があるかどうか」です。
別個に渡されたふたつの型が同じであるという制約を付けたいという目的で
以下のようなトレイト Same を定義した場合、実装を追加できてしまうと破綻してしまうので、
なんらかの方法で制限できるだろうかという疑問です。
pub trait Same<T> {}
impl<T> Same<T> for T {}
// 使用例
pub fn foo<T, U>(x: T, y: U)
where
T: Same<U>,
{
}
ちなみに目的を上述しましたけども実際には目的というよりは題材です。
つまり具体的な用途は考えておらず、質問はあくまでも「実装させない方法があるかどうか」です。
739デフォルトの名無しさん
2022/09/19(月) 19:32:04.41ID:sJf7ZiDr trait Sealed {}
pub trait Same<T>: Sealed {}
pub trait Same<T>: Sealed {}
740デフォルトの名無しさん
2022/09/19(月) 21:19:03.69ID:EybjBREq741デフォルトの名無しさん
2022/09/19(月) 21:29:04.18ID:Elo9mBmF ふたつの型が同じという制約を付けたいなら
TとUじゃなくTとTにすればいいじゃんか
TとUじゃなくTとTにすればいいじゃんか
742デフォルトの名無しさん
2022/09/19(月) 21:34:13.52ID:jWPeXdq1 >>738
達成したいことが特にないらしいからなんとも言えないけど enum を使っても近いことはできるんじゃないかな。
enum Same{SameA(型A),SameB(型B)}
みたいにしてやれば、Same 経由で扱う限り実装は増やせないぞ。
達成したいことが特にないらしいからなんとも言えないけど enum を使っても近いことはできるんじゃないかな。
enum Same{SameA(型A),SameB(型B)}
みたいにしてやれば、Same 経由で扱う限り実装は増やせないぞ。
743デフォルトの名無しさん
2022/09/19(月) 22:48:26.11ID:npVSxydm >>739-740
実装を追加させないテクニックのひとつとして有用ですし紹介はありがたいです。
しかしそれだと Sealed を実装した型だけにしか使えず、 >>738 で示したような汎用的に型を比較するトレイトには使えないですよね。
この Same のように機能するトレイトに実装を追加させないというのは前提と考えて欲しいです。
>>741
そういうレスが付くことを避けたいから最後の文をつけたつもりなんですが……。
Rust の初心者として様々な言語機能を理解したいという立場で疑問に思った部分を抜き出し、
説明のために前提条件を設定したのであって、前提条件の部分自体は解決したい課題ではないです。
いわゆるXY問題というものの存在は承知しておりますので
解決したい大元の問題を示さないというのがモヤモヤするだろうなというのはわかります。
わかりますが、大元の問題というものはありません。
この範囲で完結するパズルだと思ってください。
実装を追加させないテクニックのひとつとして有用ですし紹介はありがたいです。
しかしそれだと Sealed を実装した型だけにしか使えず、 >>738 で示したような汎用的に型を比較するトレイトには使えないですよね。
この Same のように機能するトレイトに実装を追加させないというのは前提と考えて欲しいです。
>>741
そういうレスが付くことを避けたいから最後の文をつけたつもりなんですが……。
Rust の初心者として様々な言語機能を理解したいという立場で疑問に思った部分を抜き出し、
説明のために前提条件を設定したのであって、前提条件の部分自体は解決したい課題ではないです。
いわゆるXY問題というものの存在は承知しておりますので
解決したい大元の問題を示さないというのがモヤモヤするだろうなというのはわかります。
わかりますが、大元の問題というものはありません。
この範囲で完結するパズルだと思ってください。
744デフォルトの名無しさん
2022/09/20(火) 00:14:22.92ID:nBuFqijL 2つの矛盾してる要求を同時に実現は無理だわな
745デフォルトの名無しさん
2022/09/20(火) 00:42:08.53ID:FykVNAq+ impl Foo for Tが存在する時点で他の型にFoo実装しようとするとconflictしなかったっけ
746デフォルトの名無しさん
2022/09/20(火) 00:43:28.04ID:FykVNAq+ fundamentalな型に一通り実装しておけば良さそう
747デフォルトの名無しさん
2022/09/20(火) 00:48:25.82ID:FykVNAq+748デフォルトの名無しさん
2022/09/20(火) 00:50:06.23ID:FykVNAq+ fundamental云々はcoherent ruleの話でconflictとは関係なかったわ
749738
2022/09/20(火) 01:17:29.77ID:w2qVrruo なるほど、 C++ と違って特殊化にならないからより狭い範囲の実装は追加できないんですね。
&T とか &mut T とかも先に実装しておけば追加の余地をなくせると。
&T とか &mut T とか以外にどういうのがありえますかね?
&T とか &mut T とかも先に実装しておけば追加の余地をなくせると。
&T とか &mut T とか以外にどういうのがありえますかね?
750デフォルトの名無しさん
2022/09/20(火) 01:40:45.09ID:lHbnVGdk751738
2022/09/20(火) 01:53:09.66ID:w2qVrruo752デフォルトの名無しさん
2022/09/20(火) 18:26:27.74ID:p9SiwD2d 「Linux」、バージョン6.1でRustを導入へ--トーバルス氏が明言
https://japan.zdnet.com/article/35193491/
https://japan.zdnet.com/article/35193491/
753デフォルトの名無しさん
2022/09/20(火) 20:25:26.21ID:ckEqOjly754デフォルトの名無しさん
2022/09/20(火) 20:46:56.46ID:Di+jgu/u 今のところデバドラだけという話だけど
基幹部分の新実装をRustで作りましたという
人が絶対現れるからそのときどうなるだろ
基幹部分の新実装をRustで作りましたという
人が絶対現れるからそのときどうなるだろ
755デフォルトの名無しさん
2022/09/20(火) 20:51:48.09ID:rUHkgvjw 誰もvoldemort typeの名を呼ぼうとしない
756デフォルトの名無しさん
2022/09/22(木) 02:33:16.78ID:OUmiFnaH MS AzureのCTOが「新しいプロジェクトでC/C++使うのはやめて
非GC言語が必要な状況ではRustを使うべき時だ」ってツイートしてるけど
Visual StudioでもRustが最初からパッケージングされてるようになるのかな
非GC言語が必要な状況ではRustを使うべき時だ」ってツイートしてるけど
Visual StudioでもRustが最初からパッケージングされてるようになるのかな
757デフォルトの名無しさん
2022/09/22(木) 09:05:24.01ID:e5bGjsaE https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html
Cloudflare、NGINXに代えて自社開発のRust製HTTPプロキシ「Pingora」をグローバルCDNに採用。性能向上しつつCPUとメモリ消費を3分の1に
Cloudflare、NGINXに代えて自社開発のRust製HTTPプロキシ「Pingora」をグローバルCDNに採用。性能向上しつつCPUとメモリ消費を3分の1に
758デフォルトの名無しさん
2022/09/22(木) 13:36:58.59ID:V4zanZlp759デフォルトの名無しさん
2022/09/22(木) 19:38:28.16ID:VGEMfVQX760デフォルトの名無しさん
2022/09/23(金) 05:18:56.24ID:I8UIrhRk Iteratorに対するIntoIteratorのように
Futureに対するIntoFutureということか
しかも.awaitに対して自動適用だからもっと効果が大きいか
非同期を返すビルダーに対してFutureを返させるためのビルド完了指示メソッド呼び出しが不要となる
Futureに対するIntoFutureということか
しかも.awaitに対して自動適用だからもっと効果が大きいか
非同期を返すビルダーに対してFutureを返させるためのビルド完了指示メソッド呼び出しが不要となる
761デフォルトの名無しさん
2022/09/23(金) 08:24:08.00ID:G8O+P73a Rust analyzerが優秀過ぎてMSが入る余地なさそう
PythonがMS Storeから落とせるみたいにインストールが楽になるとかならありそう
VSに導入されたらそれはそれで面白いんだけど.Net言語との連携が強化されないと旨味がないな
PythonがMS Storeから落とせるみたいにインストールが楽になるとかならありそう
VSに導入されたらそれはそれで面白いんだけど.Net言語との連携が強化されないと旨味がないな
762デフォルトの名無しさん
2022/09/23(金) 08:29:43.60ID:exFn1ITS Rustからから.Net?
意味ないやろ...
意味ないやろ...
763デフォルトの名無しさん
2022/09/23(金) 10:08:58.99ID:QyFSmn0+ 既存ライブラリがそのまま呼べるならお試しで部分的に新言語導入してみようとなる可能性もあるので意味はある
764デフォルトの名無しさん
2022/09/23(金) 10:43:28.96ID:bBi47OZ4 Rust/Cliとか余計なもの作られそう
765デフォルトの名無しさん
2022/09/23(金) 12:31:56.94ID:aakQSAhx >>758
VSCodeの方が対応は早いかもだが、VSに追加する気がないことは無いんじゃないかな
VSCodeの方が対応は早いかもだが、VSに追加する気がないことは無いんじゃないかな
766デフォルトの名無しさん
2022/09/23(金) 17:48:32.43ID:z6wpDrU6767デフォルトの名無しさん
2022/09/23(金) 18:02:01.54ID:bhLcJIv7 rust_analyzerの話題ついでに教えて欲しいのですが、保存なしで構文チェック等してくれるようにならないものなのですか?
編集を破棄して保存前の状態にしたい時があるので、できれば自動で保存したくないのです
Vim系プラグイン等を入れていれば無限に戻せるのかもしれないものの、Vimが使えない身としては困ってしまいます
編集を破棄して保存前の状態にしたい時があるので、できれば自動で保存したくないのです
Vim系プラグイン等を入れていれば無限に戻せるのかもしれないものの、Vimが使えない身としては困ってしまいます
768デフォルトの名無しさん
2022/09/23(金) 18:02:58.63ID:exFn1ITS769デフォルトの名無しさん
2022/09/23(金) 18:04:41.93ID:nucVVsrt >>767
まあ普通はGitを使うからね
まあ普通はGitを使うからね
770デフォルトの名無しさん
2022/09/23(金) 18:05:33.15ID:5/jqA4bf C#も.Netも全く興味ないので知らないが
PythonでもJavaScriptでも何でもRustで作ったライブラリなどを簡単に呼び出すことができる仕組みがそれぞれ整えられている
既存のものの置き換えは無意味だが新たに作られるものはRustで書くことが増えている
PythonでもJavaScriptでも何でもRustで作ったライブラリなどを簡単に呼び出すことができる仕組みがそれぞれ整えられている
既存のものの置き換えは無意味だが新たに作られるものはRustで書くことが増えている
771デフォルトの名無しさん
2022/09/23(金) 21:26:00.89ID:Oi43IjEf repr(C)でCのフリしたRustじゃなくて、俺はありのままのRustが動いている世界線が見たいよ
772デフォルトの名無しさん
2022/09/23(金) 21:26:44.38ID:bhLcJIv7 >>769
でも、破棄ならコミット後の状態にも戻せるぜ?
でも、破棄ならコミット後の状態にも戻せるぜ?
773デフォルトの名無しさん
2022/09/23(金) 21:42:44.57ID:KYVSlV2v >>771
ABI安定化するまではFFIでextern "C"は避けられないよ
ABI安定化するまではFFIでextern "C"は避けられないよ
774デフォルトの名無しさん
2022/09/23(金) 21:53:19.36ID:wlVyCNVq >>773
そんなことすべきでない
自由にRust コンパイラによる最適化の余地を与える現在の方針がベスト
外部に公開しなきゃいけない時に外部に公開する部分だけを#[repr(C)]や#[wasm_bindgen]など指定すればよい
そんなことすべきでない
自由にRust コンパイラによる最適化の余地を与える現在の方針がベスト
外部に公開しなきゃいけない時に外部に公開する部分だけを#[repr(C)]や#[wasm_bindgen]など指定すればよい
775デフォルトの名無しさん
2022/09/23(金) 23:40:33.31ID:EyovOcQI 双方でマーシャル/アンマーシャルが必要になって無駄だよね
776デフォルトの名無しさん
2022/09/23(金) 23:55:09.24ID:9eaiNZZz なるほど
777デフォルトの名無しさん
2022/09/23(金) 23:58:10.15ID:SxK8BSHj 対C/C++はそこまで必要ならそこもRustで書いちゃうから何ら問題はない
他の言語ではそれぞれもっと大きなオーバヘッドを持っているので誤差に収まり問題にならない
他の言語ではそれぞれもっと大きなオーバヘッドを持っているので誤差に収まり問題にならない
778デフォルトの名無しさん
2022/09/24(土) 00:06:07.91ID:j2XeJCoN やっぱエアプの複オジはわかってないなぁ
779デフォルトの名無しさん
2022/09/24(土) 00:11:50.36ID:DaB/WDgt780デフォルトの名無しさん
2022/09/24(土) 00:14:18.76ID:DaB/WDgt もしかして repr(Rust) のこと言ってる?
781デフォルトの名無しさん
2022/09/24(土) 03:05:40.90ID:ugWjDAH5 Rustだけで閉じていればpubであっても自由に最適化されるからpubかどうかは関係ないでしょう
結局Rustの外に公開する部分だけの話に限られるからそこだけ相手毎に応じる現行の方式のままで構わないでしょう
結局Rustの外に公開する部分だけの話に限られるからそこだけ相手毎に応じる現行の方式のままで構わないでしょう
782デフォルトの名無しさん
2022/09/24(土) 08:50:49.84ID:pfcr5AFZ C++やRustはABI決まってないのにC言語は何故ほぼ決まってるの?
783デフォルトの名無しさん
2022/09/24(土) 09:11:44.18ID:DaB/WDgt >>781
dylibの場合pubは大いに関係あるよ
dylibの場合pubは大いに関係あるよ
784デフォルトの名無しさん
2022/09/24(土) 09:15:16.80ID:WR9fIR0K ぶっちゃけあらゆるOSがC言語で書かれているあたりCの呪縛から逃れられないよ
785デフォルトの名無しさん
2022/09/24(土) 09:26:53.29ID:rPP8Qygy >>782
名前をプログラマが決められるからだよ
名前をプログラマが決められるからだよ
786デフォルトの名無しさん
2022/09/24(土) 09:44:37.12ID:BCuennz9 >>782
むしろCは決まってるの?
決まってるわけじゃなくて単純だし歴史も長いから結果的にほぼ変わらない&その現状に合わせて変わらない変更をしてるだけみたいなことをgccかなんかの中の人の記事で読んだ気がするんだけどデマなんかな
むしろCは決まってるの?
決まってるわけじゃなくて単純だし歴史も長いから結果的にほぼ変わらない&その現状に合わせて変わらない変更をしてるだけみたいなことをgccかなんかの中の人の記事で読んだ気がするんだけどデマなんかな
787はちみつ餃子 ◆8X2XSCHEME
2022/09/24(土) 10:38:04.73ID:2HWwrIyG 近年になって作られた高速リンカ mold の作者の話でも、
文書化されていない暗黙の仕様に何度もぶつかったみたいなことだったはず。
C 以外の言語 (処理系) もツールチェインは共通のものを使っている場合は結構あるし
どれがどの挙動に依存しているかようわからんので安易に整理するわけにもいかず、
結局のところは C コンパイラとは長年に渡って協調してきたから細かい問題点が
解決されているというだけで、そんなにカッチリした仕様が確立しているわけではないと思う。
文書化されていない暗黙の仕様に何度もぶつかったみたいなことだったはず。
C 以外の言語 (処理系) もツールチェインは共通のものを使っている場合は結構あるし
どれがどの挙動に依存しているかようわからんので安易に整理するわけにもいかず、
結局のところは C コンパイラとは長年に渡って協調してきたから細かい問題点が
解決されているというだけで、そんなにカッチリした仕様が確立しているわけではないと思う。
788デフォルトの名無しさん
2022/09/24(土) 11:00:33.46ID:DaB/WDgt CはCPUベンダーが呼び出し規約を文書化してるよ
moldの話はELFやリンクに関連する話では
確かにABIのうちではあるけど言語ごとに異なる仕様になるようなものではないと思う
moldの話はELFやリンクに関連する話では
確かにABIのうちではあるけど言語ごとに異なる仕様になるようなものではないと思う
789デフォルトの名無しさん
2022/09/24(土) 11:33:36.58ID:FWSMvJVe790デフォルトの名無しさん
2022/09/24(土) 13:14:15.81ID:DaB/WDgt791デフォルトの名無しさん
2022/09/24(土) 14:25:21.27ID:PoJJisuz cdeclとかstdcallみたいなやつ?
792はちみつ餃子 ◆8X2XSCHEME
2022/09/24(土) 16:06:51.67ID:2HWwrIyG >>791
その段階ではあまり曖昧さはない。
リンクする前の状態はリンクに必要な情報一式が入ってるはずなんだけど、
その扱いが言語や処理系をまたぐとややこしくなることもあるってこと。
アーキテクチャによって扱いを変える必要がある場合もあるし。
その段階ではあまり曖昧さはない。
リンクする前の状態はリンクに必要な情報一式が入ってるはずなんだけど、
その扱いが言語や処理系をまたぐとややこしくなることもあるってこと。
アーキテクチャによって扱いを変える必要がある場合もあるし。
793デフォルトの名無しさん
2022/09/24(土) 16:24:43.84ID:PoJJisuz >>792
コンパイラがリンカに渡す情報って統一規格があるの?
コンパイラがリンカに渡す情報って統一規格があるの?
794デフォルトの名無しさん
2022/09/24(土) 17:05:25.99ID:7d8zqodE >>793
別に統一されちゃいないがELFとかPEとか
別に統一されちゃいないがELFとかPEとか
795デフォルトの名無しさん
2022/09/24(土) 17:10:20.79ID:GMpouZpq じゃあ、そのオブジェクト・ファイル形式の仕様に問題があるってことでは?
796はちみつ餃子 ◆8X2XSCHEME
2022/09/24(土) 17:36:26.33ID:2HWwrIyG >>795
ELF に置き換わるときにオブジェクトファイルの仕様の曖昧さはほとんど解消されていると思う。
ただ現実には全てが正しく実装されているわけではなく、
場合によっては正しかったほうを間違った側にあわさざるを得ないとかいう場合もある。
仕様がどうこう言ったって、実装が間違っていたって現実にもう動いているものがあるのなら変えられんのよ。
そういう歴史的負債がどんどん積み重なってわけわからんようになる。
ELF に置き換わるときにオブジェクトファイルの仕様の曖昧さはほとんど解消されていると思う。
ただ現実には全てが正しく実装されているわけではなく、
場合によっては正しかったほうを間違った側にあわさざるを得ないとかいう場合もある。
仕様がどうこう言ったって、実装が間違っていたって現実にもう動いているものがあるのなら変えられんのよ。
そういう歴史的負債がどんどん積み重なってわけわからんようになる。
797デフォルトの名無しさん
2022/09/24(土) 19:08:36.35ID:eDCmZTMq798デフォルトの名無しさん
2022/09/24(土) 22:13:22.85ID:DaB/WDgt 元々の他言語からrust呼び出す話ならそのレベルの話は関係ないでしょ
LLVMがよしなにやってくれるのでは
LLVMがよしなにやってくれるのでは
799デフォルトの名無しさん
2022/09/24(土) 22:29:32.09ID:GMpouZpq ARM64ほどの絶対的パワーは必要ないので、ARM63で価格が120円くらいのチップになりませんかね?
800デフォルトの名無しさん
2022/09/25(日) 08:24:33.85ID:j3K9KjV7 Option<NoneZeroUsize>などを使えば
IDやカウンタなどの用途でOption<usize>などを使っていたものを
半分のメモリサイズで済むようになるの?
IDやカウンタなどの用途でOption<usize>などを使っていたものを
半分のメモリサイズで済むようになるの?
801デフォルトの名無しさん
2022/09/25(日) 11:42:14.43ID:sQFmQmse >>799
任せてください。符号ビット省略しておきますね
任せてください。符号ビット省略しておきますね
802デフォルトの名無しさん
2022/09/25(日) 15:32:52.52ID:F2Viqk5M Microsoftがやりそうなことだけど、Rustに独自拡張を含めたりとかしてほしくない
803デフォルトの名無しさん
2022/09/25(日) 17:24:00.83ID:xalR35FT Linuxはカーネル開発の為に今まさにRustに独自拡張を含ませようとしてるのに
Microsoftはダメなの?
Microsoftはダメなの?
804デフォルトの名無しさん
2022/09/25(日) 17:34:47.30ID:4B3i10Bx try_new()とかtry_reserve()とか元々ないのが不思議だったし導入の良いきっかけとなっただけ
805デフォルトの名無しさん
2022/09/25(日) 17:57:47.12ID:6lgwXJxi 言語自体forkして独自のエコシステムを構築しようとしなければ別に良いのでは
806デフォルトの名無しさん
2022/09/25(日) 18:09:02.84ID:6wI0gbs/ 正直LinuxにRustなんて辞めればいいのに・・・
807デフォルトの名無しさん
2022/09/25(日) 18:14:08.03ID:Td47G6We Rustに限った話じゃないんだけどそれなりに複雑なロジック(例えばデコーダやパーサ)の実践的なテストの
作り方の解説とかどっかにある?例えばJPEGやPNG、MP3、AVIとかを扱うようなコードを想定
関数単体のテストはともかく、結合した状態で全てのコードを動かそうとすると入力パターンがどんどん増えるし
パディングビットにゴミがあっても問題ないかなどを考慮しだすと更に膨れあがる
さらに歴史が長いフォーマットだと、そもそも仕様をどう定義するのかという点が問題になることもあるし
作り方の解説とかどっかにある?例えばJPEGやPNG、MP3、AVIとかを扱うようなコードを想定
関数単体のテストはともかく、結合した状態で全てのコードを動かそうとすると入力パターンがどんどん増えるし
パディングビットにゴミがあっても問題ないかなどを考慮しだすと更に膨れあがる
さらに歴史が長いフォーマットだと、そもそも仕様をどう定義するのかという点が問題になることもあるし
808デフォルトの名無しさん
2022/09/25(日) 18:21:16.44ID:xalR35FT テストがすごいのはSQLite
809デフォルトの名無しさん
2022/09/25(日) 19:04:38.98ID:rVqFiGXV >>803
別に独自拡張とか入れてないだろ
コンパイラへの機能追加は全部本体に入れていてnightlyで使える状態だし
Linuxカーネル向けのallocなんかは単にライブラリであって言語自体がforkしてるわけではない
別に独自拡張とか入れてないだろ
コンパイラへの機能追加は全部本体に入れていてnightlyで使える状態だし
Linuxカーネル向けのallocなんかは単にライブラリであって言語自体がforkしてるわけではない
810デフォルトの名無しさん
2022/09/25(日) 19:57:21.62ID:6lgwXJxi >>806
なんかまずいことでもあるの?
なんかまずいことでもあるの?
811デフォルトの名無しさん
2022/09/25(日) 19:59:47.96ID:Rxhh3DJ9 >>810
迷走と凋落、そして黒歴史化。
迷走と凋落、そして黒歴史化。
812デフォルトの名無しさん
2022/09/25(日) 20:07:26.82ID:58piYD8Z >>807
メディアのエンコーディングのことはさっぱりしらんけど、一般的には結合テストじゃなくて、単体テストでパターンは網羅すべし
できるんならやればいいけど、結合テストで入力の網羅なんて普通はやらない
メディアのエンコーディングのことはさっぱりしらんけど、一般的には結合テストじゃなくて、単体テストでパターンは網羅すべし
できるんならやればいいけど、結合テストで入力の網羅なんて普通はやらない
813デフォルトの名無しさん
2022/09/25(日) 20:26:59.51ID:Td47G6We >>812
条件分岐で関数Aを呼ぶべき所を間違えてA'を呼んでいて出力結果がちょっと変・・・というのをさっきやらかした
関数そのものに問題はないし処理内容がちょっと違うだけなので実行は出来てしまうのがいやらしい
で、テストを作ろうとしたけどどうしようか悩み中
条件分岐で関数Aを呼ぶべき所を間違えてA'を呼んでいて出力結果がちょっと変・・・というのをさっきやらかした
関数そのものに問題はないし処理内容がちょっと違うだけなので実行は出来てしまうのがいやらしい
で、テストを作ろうとしたけどどうしようか悩み中
814デフォルトの名無しさん
2022/09/25(日) 20:37:27.14ID:lhW/fB5K そういうのは呼び出し側の単体でええんちゃうの
815デフォルトの名無しさん
2022/09/25(日) 21:09:49.29ID:j1+dHWho >>807
歴史があり、曖昧さが残るフォーマットの再実装はできればやりたくない仕事だな。
対応する仕様を現代で最低限必要なものを取捨選択して決め打ちで実装しつつ、考慮漏れでクリティカルなものは取り入れていく方式でやるしかないよ。
歴史あるフォーマットの曖昧な対応を追体験する作業は、不毛だからできれば既存実装におまかせすべき。
歴史があり、曖昧さが残るフォーマットの再実装はできればやりたくない仕事だな。
対応する仕様を現代で最低限必要なものを取捨選択して決め打ちで実装しつつ、考慮漏れでクリティカルなものは取り入れていく方式でやるしかないよ。
歴史あるフォーマットの曖昧な対応を追体験する作業は、不毛だからできれば既存実装におまかせすべき。
816デフォルトの名無しさん
2022/09/25(日) 21:31:04.61ID:Td47G6We817デフォルトの名無しさん
2022/09/25(日) 21:51:09.44ID:6lgwXJxi >>811
Linux側にメリットがないと言ってる?
Linux側にメリットがないと言ってる?
818デフォルトの名無しさん
2022/09/25(日) 21:51:47.84ID:PDKGWlWe819デフォルトの名無しさん
2022/09/25(日) 21:53:52.45ID:j1+dHWho >>816
JavaみたいにDIが発展しているタイプの言語だと中間コンポーネントが呼び出すコンポーネントはモックをインジェクトしてやって、適切なメソッドが呼び出されたかのテストとかよく書くね。
けど、正直Rustを含む他の言語で中間のレイヤだけ独立してテスト書くようなこだわりはあまり見たことも書いたこともないなぁ。
モジュール設計の考え方が変わるからかな?
JavaみたいにDIが発展しているタイプの言語だと中間コンポーネントが呼び出すコンポーネントはモックをインジェクトしてやって、適切なメソッドが呼び出されたかのテストとかよく書くね。
けど、正直Rustを含む他の言語で中間のレイヤだけ独立してテスト書くようなこだわりはあまり見たことも書いたこともないなぁ。
モジュール設計の考え方が変わるからかな?
820デフォルトの名無しさん
2022/09/25(日) 22:41:02.05ID:Td47G6We 今作っているのだとこんな感じかな?
関数C(データの前処理、処理単位への分割)
↓
関数B(処理全体の制御)→関数A'(処理1-2)
↓
関数A(処理1-1)
>>818,819
その場合モックへ切り替える機構はどうするんだろ
そのためにコードを書き換えていてはミスが入り込む可能性が高くなるし、条件付きコンパイルも同様のリスクがある
てかThe Rustのテストの所を見ても関数の呼び出し状況をテストする方法とかは書いていないんだよな
なんかその辺を良い感じに可視化してくれるツールとかあるんだろうか
関数C(データの前処理、処理単位への分割)
↓
関数B(処理全体の制御)→関数A'(処理1-2)
↓
関数A(処理1-1)
>>818,819
その場合モックへ切り替える機構はどうするんだろ
そのためにコードを書き換えていてはミスが入り込む可能性が高くなるし、条件付きコンパイルも同様のリスクがある
てかThe Rustのテストの所を見ても関数の呼び出し状況をテストする方法とかは書いていないんだよな
なんかその辺を良い感じに可視化してくれるツールとかあるんだろうか
821デフォルトの名無しさん
2022/09/26(月) 00:07:36.94ID:h/WE7ZWH >>820
すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ
C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね
すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ
C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね
822デフォルトの名無しさん
2022/09/26(月) 00:33:03.55ID:TCGzsvbI mockall使うとか
823デフォルトの名無しさん
2022/09/26(月) 06:28:19.26ID:p/pWEmYs cargo testで関数テスト、モジュールテスト、モジュール間テストなどあらゆるテストをやっているけどダメなの?
824デフォルトの名無しさん
2022/09/26(月) 06:47:39.41ID:h/WE7ZWH825デフォルトの名無しさん
2022/09/26(月) 19:21:24.42ID:kI3cAlPQ モックやスタブは別モジュール化しておいて
mod tests内では本物モジュールをuseする代わりにそれをuseするだけじゃないの?
mod tests内では本物モジュールをuseする代わりにそれをuseするだけじゃないの?
826デフォルトの名無しさん
2022/09/26(月) 19:31:47.69ID:V9yeC/LF あと#[cfg(test)]でそれをuse
そして#[cfg(not(test))]で本物use
そして#[cfg(not(test))]で本物use
827デフォルトの名無しさん
2022/09/26(月) 19:31:51.25ID:i/jndsoD 他の言語でもユーティリティを使わずに、DIやモックを自分でやったことがないんだろうな
説明が面倒だ
説明が面倒だ
828デフォルトの名無しさん
2022/09/26(月) 19:38:20.09ID:V9yeC/LF >>827
テスト以外の開発の話でも
フレームワークに依存してやってる人は
単純なこと含めて本質的なことを理解してない人が多く
フレームワークなしでは何も分からず何も出来なくなってしまう例を時々見かける
テスト以外の開発の話でも
フレームワークに依存してやってる人は
単純なこと含めて本質的なことを理解してない人が多く
フレームワークなしでは何も分からず何も出来なくなってしまう例を時々見かける
829デフォルトの名無しさん
2022/09/26(月) 21:10:39.16ID:qW/k82Qg cfg使えば良いじゃないって人は#ifまみれで一見しただけじゃ
何がどう動くんだか判らないCのコードを正当化するつもりなのだろうか
Rustは人間が注意すれば問題ないみたいな考えはレガシーで時代遅れだ
という思想の言語だと思っているんだが違うのかな
何がどう動くんだか判らないCのコードを正当化するつもりなのだろうか
Rustは人間が注意すれば問題ないみたいな考えはレガシーで時代遅れだ
という思想の言語だと思っているんだが違うのかな
830デフォルトの名無しさん
2022/09/26(月) 21:41:35.64ID:w5YNQb64■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 【福岡】ミカンの木に逆さ吊りになっていた高齢の男性が死亡 [雑用縞工作★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- コンビニ店長、ついにキレる「なんであなた達にトイレを貸さないといけないんですか?私達はトイレレンタル業ではありません」 [329329848]
- 【高市悲報】大暴落 [115996789]
- 🏡
- 教育ママゴン「うちの子はしんちゃんや特撮、リゼロは見せません。ジブリやディズニーとかしか見させません」こゆのって実際どうなん? [257926174]
- 【速報】東京から人が消える [329329848]
- 力を解放していいかな?
