[過去ログ]
Rust part16 (1002レス)
Rust part16 http://mevius.5ch.net/test/read.cgi/tech/1656285423/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
635: デフォルトの名無しさん [sage] 2022/09/05(月) 19:20:47.36 ID:g3RfqaIY >>633 行数短くしたいだけなら fn func(x: u8, y: u8) -> u8 { let (x, y) = (x as u8, y as u8); (((x - y) * 170) >> 16) + y) as u8 } とは書けるけどやってることは全く同じだしこれで期待に応えられてるかは分からん http://mevius.5ch.net/test/read.cgi/tech/1656285423/635
636: デフォルトの名無しさん [sage] 2022/09/05(月) 19:21:35.07 ID:g3RfqaIY >>635 2行目間違えた as i32 に読み替えて http://mevius.5ch.net/test/read.cgi/tech/1656285423/636
637: デフォルトの名無しさん [sage] 2022/09/05(月) 21:29:56.32 ID:wI2HBmBd >>633 その例は手動で最適化すると fn func(_x: u8, y: u8) -> u8 { y } それはともかく 行数を節約したいという間違った価値観を捨てることをおすすめ http://mevius.5ch.net/test/read.cgi/tech/1656285423/637
638: デフォルトの名無しさん [sage] 2022/09/05(月) 21:38:39.53 ID:F/g4kaon x < y の場合考慮してなさそう http://mevius.5ch.net/test/read.cgi/tech/1656285423/638
639: デフォルトの名無しさん [sage] 2022/09/05(月) 21:53:26.61 ID:wI2HBmBd ホントだごめん訂正 fn func(x: u8, y: u8) -> u8 { y - (x < y) as u8 } http://mevius.5ch.net/test/read.cgi/tech/1656285423/639
640: デフォルトの名無しさん [sage] 2022/09/06(火) 00:31:42.49 ID:EiVnVIDc 結局u8で返すなら 途中でi32使わずとも 工夫するとu8のままだけで算出できちゃったりするわけか http://mevius.5ch.net/test/read.cgi/tech/1656285423/640
641: デフォルトの名無しさん [sage] 2022/09/06(火) 00:52:56.28 ID:uJFa29+7 逆方向にシフトした場合は? そんな用途があるのか知らんけど http://mevius.5ch.net/test/read.cgi/tech/1656285423/641
642: デフォルトの名無しさん [sage] 2022/09/06(火) 01:12:27.41 ID:EiVnVIDc >>641 それはu8部分の下位8bitが常にゼロとなって 足しても引いても影響ないかな http://mevius.5ch.net/test/read.cgi/tech/1656285423/642
643: 628 [sage] 2022/09/06(火) 11:02:40.94 ID:xGSGq1SQ スタンダードな書き方みたいなのはないのかな なら>>634で行こうと思います あと>>633は右シフトを間違えていました 16ではなく8です http://mevius.5ch.net/test/read.cgi/tech/1656285423/643
644: デフォルトの名無しさん [sage] 2022/09/07(水) 08:11:56.26 ID:8saglJYc Rustのバイトオーダーってそのターゲットのネイティブ(x64ならリトルエンディアン)で良いの? http://mevius.5ch.net/test/read.cgi/tech/1656285423/644
645: デフォルトの名無しさん [sage] 2022/09/07(水) 08:24:04.31 ID:41cUJGIp もちろん そして依存しないよう3種類用意されてる assert_eq!(0x01020304, u32::from_be_bytes([1, 2, 3, 4])); // big endian assert_eq!(0x04030201, u32::from_le_bytes([1, 2, 3, 4])); // little endian assert_eq!(XXX, u32::from_ne_bytes([1, 2, 3, 4])); // native endian http://mevius.5ch.net/test/read.cgi/tech/1656285423/645
646: デフォルトの名無しさん [] 2022/09/07(水) 23:31:51.68 ID:qqHULq33 native endianというのは初めて聞いたのですが、これはどういうものなのですか? http://mevius.5ch.net/test/read.cgi/tech/1656285423/646
647: デフォルトの名無しさん [] 2022/09/07(水) 23:54:21.35 ID:En8I5Kb5 この場合 >>644も書いているようにコンパイルターゲット環境のエンディアンのこと 特にターゲット指定がなければ自分の使っているPC環境で通常はx64などlittle endianになりますが そこでleと指定してはダメで環境に応じて適切に対応させるためにneを使います 一方でAPIなどでエンディアンが指定されてる時は指定通りbeかleを使います http://mevius.5ch.net/test/read.cgi/tech/1656285423/647
648: デフォルトの名無しさん [sage] 2022/09/08(木) 00:04:41.95 ID:nmwPOGZ0 >>645 サンクス。u32とかにはfrom_leとかあるみたいですね。こっちの方が使う機会は多そう デフォルトのバイトオーダーを変更したり、変数やフィールド単位でバイトオーダーを設定する みたいな芸当は流石に無理なのかな・・・ググったけどそれっぽい情報は見つけられなかった http://mevius.5ch.net/test/read.cgi/tech/1656285423/648
649: デフォルトの名無しさん [sage] 2022/09/08(木) 00:19:17.65 ID:8UoQH6yi >>648 操作に最適なバイトオーダーは使用CPUで決まるネイティブエンディアン だから原則としてネイティブエンディアンのみでプログラミングする 例外として外部とのやりとりなどエンディアン指定がある時はその境界で変換 http://mevius.5ch.net/test/read.cgi/tech/1656285423/649
650: はちみつ餃子 ◆8X2XSCHEME [sage] 2022/09/08(木) 00:23:28.76 ID:MG9wnc1h >>648 内部的に色々な表現を有りということにするならやりたい操作を個別に定義するしかないよ。 でも普通はそんな煩雑なことをしたくないから 内部的には一環した表現を使って必要な変換は入出力のみというのが一般的な構成だし、 言語やライブラリも基本的には一般的な構成に倣っている。 http://mevius.5ch.net/test/read.cgi/tech/1656285423/650
651: デフォルトの名無しさん [sage] 2022/09/08(木) 01:11:28.44 ID:U6/gufpm >>648 変数やフィールドのメモリ上の表現が特定のエンディアンにしたいのであれば、 #[repr(C)] struct BeU32([u8; 4]); みたいな構造体を用意して impl Be32 { fn get(&self) -> u32 { u32::from_be_bytes(self.0) } fn ser (&mut self, v: u32) { self.0 = v.to_be_bytes(); } } こういうアクセサを実装すれば良いかと 何の役に立つのかはよくわからないけど、特定のエンディアンでシリアライズされたデータにそのままアクセスしたい場合とかに便利なのかな http://mevius.5ch.net/test/read.cgi/tech/1656285423/651
652: デフォルトの名無しさん [sage] 2022/09/08(木) 01:21:33.97 ID:5HeI/FQK mansplainers http://mevius.5ch.net/test/read.cgi/tech/1656285423/652
653: デフォルトの名無しさん [] 2022/09/08(木) 15:55:57.30 ID:Vswe11EN RustをOpenMPIに対応させるようなプロジェクトってありますか? http://mevius.5ch.net/test/read.cgi/tech/1656285423/653
654: デフォルトの名無しさん [sage] 2022/09/08(木) 16:49:24.48 ID:mLv3aAxt 「Rust OpenMPI」でGoogle検索 http://mevius.5ch.net/test/read.cgi/tech/1656285423/654
655: デフォルトの名無しさん [sage] 2022/09/08(木) 18:02:42.70 ID:U6/gufpm OpenMP なのか Open MPI なのかどっち http://mevius.5ch.net/test/read.cgi/tech/1656285423/655
656: デフォルトの名無しさん [] 2022/09/08(木) 20:45:38.87 ID:Vswe11EN 知りたいのはOpenMPIの方です ググるとOpenMPIとOpenMPを勘違いしたと思われるRayonを紹介する記事が出てきたり、OpenMPがらみのサイトが出てきたり、なかなか状況が分かりません・・・・ http://mevius.5ch.net/test/read.cgi/tech/1656285423/656
657: デフォルトの名無しさん [sage] 2022/09/08(木) 20:53:50.25 ID:RwfCQI7B 一番上のrsmpiは違うの http://mevius.5ch.net/test/read.cgi/tech/1656285423/657
658: デフォルトの名無しさん [sage] 2022/09/08(木) 21:56:17.41 ID:fa0yFdt8 MPIはHPC以外では使う必要ないです 機械学習でも有用だとは思いますが そもそもフレームワークが対応していないから 全部自前で作ってるような人以外は必要ないです http://mevius.5ch.net/test/read.cgi/tech/1656285423/658
659: デフォルトの名無しさん [sage] 2022/09/09(金) 01:14:31.51 ID:4b4Wyf25 Open MPIに限らずMPIはアプリから見たらただのライブラリだからRust側で特別な対応は不要で単にCの関数を呼び出せばよいだけでは http://mevius.5ch.net/test/read.cgi/tech/1656285423/659
660: デフォルトの名無しさん [sage] 2022/09/09(金) 08:12:49.36 ID:auDHI5c1 良くありがちな奴だと思うけど struct ARGB32 {A: u8, R: u8, G: u8, B: u8,} みたいに書くとスネークケースじゃないと警告が出るけどどう書くのがRust流なの? これ小文字にしちゃったら少なからず可読性が落ちるよね http://mevius.5ch.net/test/read.cgi/tech/1656285423/660
661: デフォルトの名無しさん [] 2022/09/09(金) 08:31:41.27 ID:WeF8ASv0 #[allow(non_snake_case)] しかしフィールド名だけ小文字にすれば不要 struct ARGB32 {a: u8, r: u8, g: u8, b: u8,} そして可読性が落ちると思わない http://mevius.5ch.net/test/read.cgi/tech/1656285423/661
662: デフォルトの名無しさん [sage] 2022/09/09(金) 09:24:21.25 ID:4b4Wyf25 構造体名もCamelCaseでArgb32とすべきかな http://mevius.5ch.net/test/read.cgi/tech/1656285423/662
663: デフォルトの名無しさん [sage] 2022/09/09(金) 12:29:38.55 ID:6YdHvwwi 識別子を極端に省略するのは良くないという現代のプログラミングの流儀と業界の略語でコンフリクトしてるよね。 略語を使わずに書くとこうかね? Color<T>{alpha: T, red: T, green: T, blue: T} CMYはどうなるとか言い出すやつがいると面倒そうだけど。 http://mevius.5ch.net/test/read.cgi/tech/1656285423/663
664: デフォルトの名無しさん [sage] 2022/09/09(金) 12:42:45.67 ID:VsTRsG1f enum Color { Red, Blue, Green, RGB(u32, u32, u32), HSV(u32, u32, u32), HSL(u32, u32, u32), CMY(u32, u32, u32), CMYK(u32, u32, u32, u32), } http://mevius.5ch.net/test/read.cgi/tech/1656285423/664
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 338 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s