[過去ログ] Rust part16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
715: 2022/09/11(日)23:45 ID:ujBIW69o(3/3) AAS
Rust固有じゃないけど移植性を改善する方法に1バイトずつ処理するという手があるけどこの実装は、今時の32bitや64bit環境で
相応にデバフが入るんですよね。MSVCでも8bitロード×8を64bitロード×1に最適化してくれなかったし
>>713
そこを抽象化するのが処理系の仕事では。いまだに構造体でパース・・・みたいなコードを見かけるし
>>714
読みやすさは改善しても今度は速度にデバフが入るような。こういうケースでアクセサメソッドを利用したとして
全てインライン展開&最適化されますかね?一つでもコールやブランチが残ったら速度が結構落ちるだろうし
716(1): 2022/09/11(日)23:59 ID:/O1tQPyF(2/2) AAS
>>707
色んなブラウザで見てみたけど
&mut (分けて書くと & mut )が μt と表示されるのはバグってるchmateだけっぽい
717: 2022/09/12(月)00:37 ID:5hhAOS+Q(1) AAS
&mut テスト
718: 2022/09/12(月)01:00 ID:JkhjRZ+U(1/2) AAS
>>716
ほー、chmateはワザとunescapeしてるのか?
5chがUnicode文字表示できるようになったんだし、そういうのはもう余計なお世話だな
719: 2022/09/12(月)01:13 ID:D0TZxDhn(1) AAS
HTML等の文字参照を処理する場合でも
μt (= & m u ; t )が μt となるのは正しいけど
&mut (= & m u t )が μt となるの間違いだからこれはバグと思われる
720: 2022/09/12(月)02:30 ID:JkhjRZ+U(2/2) AAS
あ、たしかにバグっぽい・・・
721: 2022/09/12(月)06:45 ID:hsi1XO0i(1) AAS
文字列参照に & mut なんてないからテキトーに解釈してるんでしょ
良し悪しは別にして html を扱うブラウザではそれほど珍しくはない
個人的には余計な事すんなとは思う
722: 2022/09/12(月)07:14 ID:tyJETXG8(1/3) AAS
これはmateのバグです
& x y z ; とセミコロンで終わる場合のみその部分を文字参照として解釈するのが正しいです
723: 2022/09/12(月)07:33 ID:o/NFQNbK(1/4) AAS
&mut と書けば良いかな
テスト → &mut
724: 2022/09/12(月)07:34 ID:o/NFQNbK(2/4) AAS
& amp ; amp; を空白なしで書き込んだら & に変換されてしまった
実体参照複数回展開しているのかな
&
725: 2022/09/12(月)08:15 ID:NGx/fsjU(1) AAS
ライブラリとかのコンポーネントの一部を作っているときに入出力だけ不定値として扱う方法ってありませんかね
ガワ作って入出力を完全に外部に出さないとコードがみんな消えてしまうのは不便です
最適化レベルによる変化とか全然確認出来ないし
726(1): 2022/09/12(月)08:36 ID:tyJETXG8(2/3) AAS
ちょっと意味がわからない
こうなるはずだから困ることはないと思うけど
・最適化によってRustが定めている意味が変わることはない
・pub宣言しているものは中で呼ばれていなくても単体コンパイルで消えることはない
・pub宣言されていないものは中で呼ばれていなければ今後も誰からも呼ばれないためwarningが出て消える
727: 2022/09/12(月)10:25 ID:o/NFQNbK(3/4) AAS
genericな関数だと呼び出し元がないとコード生成されないとか?
728: 2022/09/12(月)12:04 ID:tyJETXG8(3/3) AAS
その場合でも実際に使う型々でtestを書くだろうからcargo testで確認できるでしょ
729(1): 2022/09/12(月)12:46 ID:SjJDv8F6(1) AAS
>>726
ありゃうちの環境の問題か。pub付けただけじゃ関数丸ごとなかったことにされる
pub extern "C"でRust外の入出力にしてようやく消えなくなる
もうちょっと調べてみる
730(1): 2022/09/12(月)14:30 ID:o/NFQNbK(4/4) AAS
>>729
ちなみにターゲットはbinと(r)libのどっち?
binならpubでも消えるかも
731: 2022/09/12(月)19:11 ID:2zIjStdY(1) AAS
>>730
変更してみた。staticlibだとpub付けても消える。rlibなら消えないようだ
とりあえずrlibにしておいてある程度形になってきたら変更すればいいか
コード自体はどっちでも大差ないだろうし
732: 2022/09/18(日)01:08 ID:g4sMxKuf(1) AAS
[u32; LEN]と[ARGB32; LEN] の件、アラインメントが違うからtransmuteの時点でUBだけど
733: 2022/09/19(月)02:33 ID:HMAR4dxa(1/2) AAS
Tauriで動画プレーヤー的なのを作るサンプルってどっかにある?
ただ再生するデータは既存のmp4ファイルなどではなくRustプログラムから渡したい
あと再生、停止、コマ送り、シークなどの基本的な機能は実装したい
734(1): 2022/09/19(月)07:48 ID:BbpMxDy4(1) AAS
TauriってWebアプリのサーバーサイドがRustで一体型プログラムになっているだけだろ?
そして既存のWeb技術を活かせるのがTauriの利点だろ?
そうならば例えばhls.jsなど既存の好みの動画配信再生フレームワークを使えばいいだけじゃないか?
Webサーバーサイドやったことあるならばフロントエンドからファイルに見えているものは本物のファイルである必要はなくサーバーサイドが算出していれば十分だろ?
735: 2022/09/19(月)12:27 ID:HMAR4dxa(2/2) AAS
>>734
>HLS
ちょっと調べてみたけどHLSでいわゆるRAWデータを再生出来るという情報は見つけられていない
特にビデオが未圧縮データを扱えそうにない。オーディオは未圧縮FLACでいけるかもしれないけど
再生したいのがWebブラウザが対応していないデータなのでどうしようか考え中
ビデオはBMPのぱらぱら漫画でオーディオはHLSで未圧縮FLACとか?なんか無駄に実装量が増えるけど
736: 2022/09/19(月)13:11 ID:PTk7Q+2G(1) AAS
その手のやつでオーバーヘッド減らすならOS毎にネイティブ実装するしかなくない?
737: 2022/09/19(月)18:38 ID:EybjBREq(1/2) AAS
なんとかtauri使うにしてもJSやらWASMやらで動画レンダリングするようなもの作らないとだめそう
738(4): 2022/09/19(月)18:45 ID:npVSxydm(1/2) AAS
実装を追加させない方法ってありますか?
別個に渡されたふたつの型が同じであるという制約を付けたいという目的で
以下のようなトレイト Same を定義した場合、実装を追加できてしまうと破綻してしまうので、
なんらかの方法で制限できるだろうかという疑問です。
pub trait Same<T> {}
impl<T> Same<T> for T {}
// 使用例
pub fn foo<T, U>(x: T, y: U)
where
T: Same<U
省4
739(1): 2022/09/19(月)19:32 ID:sJf7ZiDr(1) AAS
trait Sealed {}
pub trait Same<T>: Sealed {}
740(1): 2022/09/19(月)21:19 ID:EybjBREq(2/2) AAS
外部リンク[html]:rust-lang.github.io
741(1): 2022/09/19(月)21:29 ID:Elo9mBmF(1) AAS
ふたつの型が同じという制約を付けたいなら
TとUじゃなくTとTにすればいいじゃんか
742: 2022/09/19(月)21:34 ID:jWPeXdq1(1) AAS
>>738
達成したいことが特にないらしいからなんとも言えないけど enum を使っても近いことはできるんじゃないかな。
enum Same{SameA(型A),SameB(型B)}
みたいにしてやれば、Same 経由で扱う限り実装は増やせないぞ。
743(1): 2022/09/19(月)22:48 ID:npVSxydm(2/2) AAS
>>739-740
実装を追加させないテクニックのひとつとして有用ですし紹介はありがたいです。
しかしそれだと Sealed を実装した型だけにしか使えず、 >>738 で示したような汎用的に型を比較するトレイトには使えないですよね。
この Same のように機能するトレイトに実装を追加させないというのは前提と考えて欲しいです。
>>741
そういうレスが付くことを避けたいから最後の文をつけたつもりなんですが……。
Rust の初心者として様々な言語機能を理解したいという立場で疑問に思った部分を抜き出し、
説明のために前提条件を設定したのであって、前提条件の部分自体は解決したい課題ではないです。
いわゆるXY問題というものの存在は承知しておりますので
解決したい大元の問題を示さないというのがモヤモヤするだろうなというのはわかります。
省2
744: 2022/09/20(火)00:14 ID:nBuFqijL(1) AAS
2つの矛盾してる要求を同時に実現は無理だわな
上下前次1-新書関写板覧索設栞歴
あと 258 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.019s