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