公式
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/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
※次スレは原則>>980が立てること
前スレ
Rust part13
https://mevius.5ch.net/test/read.cgi/tech/1636247099/
探検
Rust part14
■ このスレッドは過去ログ倉庫に格納されています
2022/02/12(土) 01:24:16.59ID:XYE+Rws6
797デフォルトの名無しさん
2022/05/06(金) 00:00:07.68ID:U1cwKpJU >>796
一般的にジェネリックにするためのトレイト境界となるパーツのトレイトは個別に型列挙してimplする必要がある
そこではマクロが有用
パーツとなるトレイトを利用してプログラミングすれば列挙の必要性がない
一般的にジェネリックにするためのトレイト境界となるパーツのトレイトは個別に型列挙してimplする必要がある
そこではマクロが有用
パーツとなるトレイトを利用してプログラミングすれば列挙の必要性がない
798デフォルトの名無しさん
2022/05/06(金) 00:18:49.47ID:lqMO+ITd パターンに定数を使うことは可能です。
fn baz(x : usize) -> usize {
const ZERO : usize = 0;
match x {
ZERO => 1,
_ => 2
}
}
しかしトレイト内の定数で型が確定しない状況ではそれがパターンに使える定数なのかどうかわかりません。
(のでエラーになります。)
trait foo {
const ZERO: Self;
fn bar(&self) -> usize {
match self {
Self::ZERO => 1, // エラーになる
_ => 2
}
}
}
このとき Self がパターンに現れることが出来る型であるという制限を付けることは可能ですか?
(>>794 の定数だけ impl すればメソッド自体は共通化できるかなと思って試みたけどこれをどうにもできなくて困った)
fn baz(x : usize) -> usize {
const ZERO : usize = 0;
match x {
ZERO => 1,
_ => 2
}
}
しかしトレイト内の定数で型が確定しない状況ではそれがパターンに使える定数なのかどうかわかりません。
(のでエラーになります。)
trait foo {
const ZERO: Self;
fn bar(&self) -> usize {
match self {
Self::ZERO => 1, // エラーになる
_ => 2
}
}
}
このとき Self がパターンに現れることが出来る型であるという制限を付けることは可能ですか?
(>>794 の定数だけ impl すればメソッド自体は共通化できるかなと思って試みたけどこれをどうにもできなくて困った)
799デフォルトの名無しさん
2022/05/06(金) 01:50:09.59ID:cmC85Voz そういう場合はif使いなさい
800デフォルトの名無しさん
2022/05/06(金) 06:31:06.34ID:ALxSds4A >>798
その問題もTraitの関数でconstを返せないため現状では無理
だからmatchパターンでは使えないがifガードでなら使える
>>789のうちimpl FizzBuzzだけ以下に変更
use std::ops::Rem;
impl<T> FizzBuzz for T where T: Copy + From<u8> + PartialEq + Rem<Output=T> {
fn fizzbuzz(&self) -> FizzBuzzResult<&Self> {
let zero = T::from(0);
match (*self % T::from(3), *self % T::from(5)) {
(x, y) if x == zero && y == zero => FizzBuzzResult::FizzBuzz,
(x, _) if x == zero => FizzBuzzResult::Fizz,
(_, y) if y == zero => FizzBuzzResult::Buzz,
_ => FizzBuzzResult::Num(self),
}
}
}
これでu128でもf64でも動く
その問題もTraitの関数でconstを返せないため現状では無理
だからmatchパターンでは使えないがifガードでなら使える
>>789のうちimpl FizzBuzzだけ以下に変更
use std::ops::Rem;
impl<T> FizzBuzz for T where T: Copy + From<u8> + PartialEq + Rem<Output=T> {
fn fizzbuzz(&self) -> FizzBuzzResult<&Self> {
let zero = T::from(0);
match (*self % T::from(3), *self % T::from(5)) {
(x, y) if x == zero && y == zero => FizzBuzzResult::FizzBuzz,
(x, _) if x == zero => FizzBuzzResult::Fizz,
(_, y) if y == zero => FizzBuzzResult::Buzz,
_ => FizzBuzzResult::Num(self),
}
}
}
これでu128でもf64でも動く
801デフォルトの名無しさん
2022/05/06(金) 11:54:43.12ID:gaqqfXMl でもそれi8では動かないだろ
802デフォルトの名無しさん
2022/05/06(金) 12:16:10.95ID:cmC85Voz ざんね〜ん
f64はStepを実装していないので(1.0)..=(100.0)できませ〜ん
いっけね!
f64はStepを実装していないので(1.0)..=(100.0)できませ〜ん
いっけね!
803デフォルトの名無しさん
2022/05/06(金) 12:52:49.36ID:Ew6ghWho804デフォルトの名無しさん
2022/05/06(金) 13:38:51.38ID:mCVU3PbX impl XXX for T で where にだらだら制約書くやつは変に制約強くなりがちだから実装の共通化が目的ならマクロ使った方が良い
実装の共通化のために継承を使うようなもので、目的に対して不適切な手段を使っているように思う
実装の共通化のために継承を使うようなもので、目的に対して不適切な手段を使っているように思う
805デフォルトの名無しさん
2022/05/06(金) 14:08:08.87ID:cmC85Voz806デフォルトの名無しさん
2022/05/06(金) 14:14:00.63ID:xNV5dZfk807デフォルトの名無しさん
2022/05/06(金) 14:15:08.65ID:gaqqfXMl マクロ使うしかないんだけど、マクロの部分はエディタのサポートがちょっと弱くなるのが残念だよね
808デフォルトの名無しさん
2022/05/06(金) 18:19:49.06ID:lqMO+ITd FizzBuzz を過剰にジェネリックにする意味はないが、
ここではジェネリック化の手法を色々知るというのがトピックで FizzBuzz はただの例だよ。
ここではジェネリック化の手法を色々知るというのがトピックで FizzBuzz はただの例だよ。
809794
2022/05/06(金) 18:53:54.80ID:13OIhPlc810デフォルトの名無しさん
2022/05/06(金) 19:10:43.41ID:lqMO+ITd811デフォルトの名無しさん
2022/05/06(金) 19:18:41.78ID:13OIhPlc812デフォルトの名無しさん
2022/05/06(金) 19:23:32.30ID:MZFtMNC9 >>809
マクロでtraitを実装するためには以下みたいなマクロを書けば良い
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=15c040ac82d2d655a7b75492c17bc73f
マクロ定義の方法などは rust macro でググるといろいろ情報出てくるかと
マクロでtraitを実装するためには以下みたいなマクロを書けば良い
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=15c040ac82d2d655a7b75492c17bc73f
マクロ定義の方法などは rust macro でググるといろいろ情報出てくるかと
813デフォルトの名無しさん
2022/05/06(金) 21:26:29.85ID:BAlRZNqr >>810
RemのOutput型を指定すればちゃんとE0158エラーになるよ
RemのOutput型を指定すればちゃんとE0158エラーになるよ
814デフォルトの名無しさん
2022/05/06(金) 22:25:22.98ID:13OIhPlc >>812
> マクロでtraitを実装する
(´・∀・`)ヘー
imple X for Yまるごとマクロの中に来るんやね
Rustのマクロについては調べたこと無かったけど
やっぱやりたいことはできるようになってそうで安心
ありがとうございました
> マクロでtraitを実装する
(´・∀・`)ヘー
imple X for Yまるごとマクロの中に来るんやね
Rustのマクロについては調べたこと無かったけど
やっぱやりたいことはできるようになってそうで安心
ありがとうございました
815デフォルトの名無しさん
2022/05/06(金) 22:43:10.27ID:BAlRZNqr ジェネリックにしつつpattern match使いたいなら
(0, 0)じゃなくて(true, true)でmatchすればいいと思う
https://play.rust-lang.org/?edition=2021&gist=c83dbaa7166545941649bb279f2162bd
(0, 0)じゃなくて(true, true)でmatchすればいいと思う
https://play.rust-lang.org/?edition=2021&gist=c83dbaa7166545941649bb279f2162bd
816デフォルトの名無しさん
2022/05/06(金) 23:24:33.89ID:lqMO+ITd817デフォルトの名無しさん
2022/05/06(金) 23:27:51.66ID:BxCPOws/ >>801
i8で動かない原因はFromを使っているためなのでTryFromを使えばi8でも動く
use std::convert::TryFrom;
use std::ops::Rem;
use num::CheckedAdd;
fn fizzbuzz<T>() -> impl Iterator<Item=FizzBuzzResult<T>>
where T: Copy + PartialEq + CheckedAdd + Rem<Output=T> + TryFrom<usize>,
{
let [zero, one, three, five] = [0, 1, 3, 5]
.map(|n| T::try_from(n).ok().unwrap());
itertools::unfold(zero, move |n|
n.checked_add(&one).map(|new| {
*n = new;
match (new % three, new % five) {
(x, y) if x == zero && y == zero => FizzBuzzResult::FizzBuzz,
(x, _) if x == zero => FizzBuzzResult::Fizz,
(_, y) if y == zero => FizzBuzzResult::Buzz,
_ => FizzBuzzResult::Num(new),
}
})
)
}
fn main() {
for f in fizzbuzz::<i8>() {
println!("{f}");
}
}
ちゃんとi8の上限127で停止
i8で動かない原因はFromを使っているためなのでTryFromを使えばi8でも動く
use std::convert::TryFrom;
use std::ops::Rem;
use num::CheckedAdd;
fn fizzbuzz<T>() -> impl Iterator<Item=FizzBuzzResult<T>>
where T: Copy + PartialEq + CheckedAdd + Rem<Output=T> + TryFrom<usize>,
{
let [zero, one, three, five] = [0, 1, 3, 5]
.map(|n| T::try_from(n).ok().unwrap());
itertools::unfold(zero, move |n|
n.checked_add(&one).map(|new| {
*n = new;
match (new % three, new % five) {
(x, y) if x == zero && y == zero => FizzBuzzResult::FizzBuzz,
(x, _) if x == zero => FizzBuzzResult::Fizz,
(_, y) if y == zero => FizzBuzzResult::Buzz,
_ => FizzBuzzResult::Num(new),
}
})
)
}
fn main() {
for f in fizzbuzz::<i8>() {
println!("{f}");
}
}
ちゃんとi8の上限127で停止
818デフォルトの名無しさん
2022/05/07(土) 00:46:09.52ID:xQfG7eKz やるじゃん
なぜかマクロを嫌うならそれでいいね
なぜかマクロを嫌うならそれでいいね
819デフォルトの名無しさん
2022/05/07(土) 01:43:00.17ID:bR8D+y4k820デフォルトの名無しさん
2022/05/07(土) 02:27:17.25ID:xQfG7eKz どっちがいいかどうかはともかくとして、817が使ったであろうnum-traitsのcrateのCheckedAddもマクロで実装されてるよん
こういうのはマクロになりがち
こういうのはマクロになりがち
821デフォルトの名無しさん
2022/05/07(土) 03:15:28.92ID:ZCh9Flgq どちらも正しい
・基本的な性質のTraitは型を列挙してimplする →マクロになる
・それら以外のTraitは基本Traitを組み合わせる →Trait境界の列挙となる
・基本的な性質のTraitは型を列挙してimplする →マクロになる
・それら以外のTraitは基本Traitを組み合わせる →Trait境界の列挙となる
822デフォルトの名無しさん
2022/05/07(土) 03:24:48.03ID:xQfG7eKz >>819
>>817 ではイテレータになってたから全然同じじゃないけど、こういうのを言いたかった
マクロを使うことでTrait境界を要求しない実装ってこっちゃね
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=dfc41224af72ac88ab0e8b716a4d4a64
>>817 ではイテレータになってたから全然同じじゃないけど、こういうのを言いたかった
マクロを使うことでTrait境界を要求しない実装ってこっちゃね
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=dfc41224af72ac88ab0e8b716a4d4a64
823デフォルトの名無しさん
2022/05/07(土) 03:48:53.73ID:9lVhRlMj824デフォルトの名無しさん
2022/05/07(土) 05:13:50.57ID:dujXhAGl >>823
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=af4aee4ee627c2163d78714f82976a8f
今日の学び: RangeFromからnext()し続けるとオーバーフローでpanic!する
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=af4aee4ee627c2163d78714f82976a8f
今日の学び: RangeFromからnext()し続けるとオーバーフローでpanic!する
825デフォルトの名無しさん
2022/05/07(土) 08:35:04.90ID:VQro7qgS 現状はジェネリックじゃ実現できない事が多々あるから性能面を重視するならマクロになる
数値系は特に
数値系は特に
826デフォルトの名無しさん
2022/05/07(土) 10:48:47.74ID:RZMV7d1m 型パズルオナニストきついなぁ
長いコードをレスに直接貼りたがる性癖どうにかならんの?
長いコードをレスに直接貼りたがる性癖どうにかならんの?
827デフォルトの名無しさん
2022/05/07(土) 11:34:33.57ID:ly+B+DwF 型パズルとか言ってるやつ
トレイト境界を理解できていないのか
トレイト境界を理解できていないのか
828デフォルトの名無しさん
2022/05/07(土) 12:04:47.91ID:yYzn+ZfL829デフォルトの名無しさん
2022/05/07(土) 12:16:47.05ID:dujXhAGl830デフォルトの名無しさん
2022/05/07(土) 13:05:53.65ID:es6B5OyZ831デフォルトの名無しさん
2022/05/07(土) 14:47:11.23ID:b69ExIFZ832デフォルトの名無しさん
2022/05/07(土) 16:45:29.23ID:6gIZ13sW >>828
const
const
833デフォルトの名無しさん
2022/05/07(土) 16:47:29.20ID:6gIZ13sW マクロとトレイトじゃなく
マクロとジェネリックの比較
マクロとジェネリックの比較
834デフォルトの名無しさん
2022/05/07(土) 17:58:20.41ID:gG9SW2bz >>826
Rustに限った話じゃないけど、playground系で貼らないのは自己顕示欲の率直なあらわれだと思う
Rustに限った話じゃないけど、playground系で貼らないのは自己顕示欲の率直なあらわれだと思う
835デフォルトの名無しさん
2022/05/07(土) 18:06:27.34ID:O43ZQkJC 辿れなくなる (サービスが終わったり障害が起こる) 可能性もあるから短いものはなるべく直接貼るようにしてる。
大抵は収まる大きさにならないけど。
5ch 自体が見れない場合はしょうがないんだが、話題に付随するコードが見れないときはだいぶんイラッとするぞ。
大抵は収まる大きさにならないけど。
5ch 自体が見れない場合はしょうがないんだが、話題に付随するコードが見れないときはだいぶんイラッとするぞ。
836デフォルトの名無しさん
2022/05/07(土) 18:29:03.69ID:dujXhAGl https://play.rust-lang.org/が落ちてる場合はhttps://play.integer32.com/でもできる
Rust固有の機能が要らなければideone.com等のサービスも無数にある
Rust固有の機能が要らなければideone.com等のサービスも無数にある
838デフォルトの名無しさん
2022/05/07(土) 18:55:21.90ID:Dd8HOak9 俺も貼れるなら直貼りするわ
いちいち見に行くのも面倒だろうし
そもそも自己顕示欲ないなら貼らないしw
いちいち見に行くのも面倒だろうし
そもそも自己顕示欲ないなら貼らないしw
839デフォルトの名無しさん
2022/05/07(土) 19:11:36.15ID:6AzGHNNA841デフォルトの名無しさん
2022/05/07(土) 19:25:31.02ID:RYRWOUip ちゃんとコンパイルとrustfmt通したもの貼りたいからplayground使う
スマホからも確認できて便利だよ
スマホからも確認できて便利だよ
842デフォルトの名無しさん
2022/05/07(土) 19:59:43.62ID:f6x3u/9i 勝手にイラついてろ
843835
2022/05/07(土) 20:14:55.20ID:O43ZQkJC844デフォルトの名無しさん
2022/05/07(土) 21:14:52.07ID:/yyMGWQT845デフォルトの名無しさん
2022/05/08(日) 00:42:10.94ID:Q6fkz0I8 5chに貼られてインデントもないコードは読みづらいし、結局コピペして整形しなおすことになるんだから、最初からplaygroundとかを使って貼れよ
もちろんちゃんとコンパイルが通って実行可能な状態でな。
言及もせずにcrateやunstable機能使われてると、なかなか実行確認できずに面倒だからな
それが閲覧者のことを考えてる、ってもんだ
サービスダウンが心配なら、複数のサービスに貼り付けてくれればいいぞ、まあそこまではいらんけど
もちろんちゃんとコンパイルが通って実行可能な状態でな。
言及もせずにcrateやunstable機能使われてると、なかなか実行確認できずに面倒だからな
それが閲覧者のことを考えてる、ってもんだ
サービスダウンが心配なら、複数のサービスに貼り付けてくれればいいぞ、まあそこまではいらんけど
846デフォルトの名無しさん
2022/05/08(日) 00:49:23.57ID:xTuvHOnl 直貼り辞めてくれない?
いらつくから
いらつくから
847デフォルトの名無しさん
2022/05/08(日) 00:51:23.20ID:Q6fkz0I8 たしかにインデントもないウンコな直貼りは約1名だけか
848デフォルトの名無しさん
2022/05/08(日) 01:34:10.66ID:uCxNUubj ウェブブラウザだとインデント消えるのか
playground使った方がいいな
playground使った方がいいな
849デフォルトの名無しさん
2022/05/08(日) 01:36:52.75ID:02uNKuEf850デフォルトの名無しさん
2022/05/08(日) 01:47:03.57ID:aBGW8DHe 連続した半角スペースがちゃんとインデントとして表示されるのは一部の専ブラとか使ったときだけ
通常のウェブブラウザではHTMLとして処理されて消える
通常のウェブブラウザではHTMLとして処理されて消える
851デフォルトの名無しさん
2022/05/08(日) 01:50:38.18ID:FQSY2mn1852デフォルトの名無しさん
2022/05/08(日) 02:08:11.23ID:aBGW8DHe 主張だなんて大げさな
ウンコが約1名いる
そのウンコはインデントしない
そのウンコは直貼りする
それだけの話だろ
ウンコが約1名いる
そのウンコはインデントしない
そのウンコは直貼りする
それだけの話だろ
853デフォルトの名無しさん
2022/05/08(日) 02:15:49.76ID:0+ernfNx スレの最初から見たけど全てのコードがインデントされてるな
1名だけインデントしていないとか言い出す人は何らかの精神病なんだろうけど
1名だけインデントしていないとか言い出す人は何らかの精神病なんだろうけど
854デフォルトの名無しさん
2022/05/08(日) 02:52:18.44ID:aBGW8DHe 二度手間だから最初からPlaygroundに貼りませんか?って話なのに
ウンコが何人いるかなんてどうでもいい話ばかり気にするのね
ウンコが何人いるかなんてどうでもいい話ばかり気にするのね
855デフォルトの名無しさん
2022/05/08(日) 03:49:22.98ID:dj1cRgnm 面白そうだから次から直貼りする
856デフォルトの名無しさん
2022/05/08(日) 03:50:49.83ID:zz/v69Kq 頑なにプレグラ使わないのはなんで?
857デフォルトの名無しさん
2022/05/08(日) 04:00:12.11ID:yk1Ip/5C いちいち見に行くの面倒だからここでいいんじゃね
でも使いたい人を責めることはしないよ
でも使いたい人を責めることはしないよ
858デフォルトの名無しさん
2022/05/08(日) 04:53:51.34ID:PeeMdZgO859デフォルトの名無しさん
2022/05/08(日) 07:15:54.25ID:slXg99Fw どこの世界でも同じだが
特定の意見や特定の方針を他人に押し付ける人やイラつく人は嫌われる
特定の意見や特定の方針を他人に押し付ける人やイラつく人は嫌われる
860デフォルトの名無しさん
2022/05/08(日) 07:38:34.92ID:yAkpoBe0 ブラウザにでっち上げた言語を無駄に抱き合わせることは、押し付けじゃないの?
861デフォルトの名無しさん
2022/05/08(日) 07:39:03.28ID:yAkpoBe0 ブラウザごと干し上げられそうだけどねw
862デフォルトの名無しさん
2022/05/08(日) 09:09:22.14ID:DesCjmqL ウンコード直貼りと自演擁護はいつもの複製おじさんだから
適当な所で切り上げないと時間の無駄だよ
適当な所で切り上げないと時間の無駄だよ
863デフォルトの名無しさん
2022/05/08(日) 09:37:03.03ID:Nx2GTU7H864デフォルトの名無しさん
2022/05/08(日) 09:52:04.06ID:1JnUqrf/ うんこ等の汚い単語を使うのはいつものキチガイだから無視するのがよいかと
865デフォルトの名無しさん
2022/05/08(日) 10:27:16.57ID:AkhbKZj7866デフォルトの名無しさん
2022/05/08(日) 10:40:24.72ID:VSrRGkQQ せめて技術的な話でやりあってくれめんすw
煽りオンリーは時間の無駄でつよ
煽りオンリーは時間の無駄でつよ
867デフォルトの名無しさん
2022/05/08(日) 11:27:48.48ID:nUQgQyI4 貼られたソースコードはクリック一つで自分の環境やplayground等に移せるようにしている
逆にplayground等に貼られたソースコードは自動引用表示してる
どちらもほぼ同じ表示となるため両派とも自由に好みのスタイルで貼ってくれて構わない
逆にplayground等に貼られたソースコードは自動引用表示してる
どちらもほぼ同じ表示となるため両派とも自由に好みのスタイルで貼ってくれて構わない
868デフォルトの名無しさん
2022/05/08(日) 14:12:20.46ID:Neo9r1Gu インデント付きで表示される5chブラウザが存在するの!?
869デフォルトの名無しさん
2022/05/08(日) 14:46:10.02ID:4M3U681r 最近はjaneでも連続半角スペースが表示されるようになってる
かなり短いコードじゃないと見にくいが
かなり短いコードじゃないと見にくいが
870デフォルトの名無しさん
2022/05/08(日) 15:16:56.45ID:4TKM/7Dc >>868
chmate: https://i.imgur.com/LPDyEpr.jpg
Chrome: https://i.imgur.com/JUzhSQn.jpg
てか、どんなブラウザで見てんのよ
chmate: https://i.imgur.com/LPDyEpr.jpg
Chrome: https://i.imgur.com/JUzhSQn.jpg
てか、どんなブラウザで見てんのよ
871デフォルトの名無しさん
2022/05/08(日) 16:00:44.57ID:IoDfoov/ >>870
ウンコ・オブ・ウンコを撮るあたりはさすがオナニスト
ウンコ・オブ・ウンコを撮るあたりはさすがオナニスト
872デフォルトの名無しさん
2022/05/08(日) 16:41:53.28ID:YFFn3It/ おまえらrustfmt使ったことないのか?
クリックで1つで呼び出せるようにしてるので
インデントが崩れていようが元が変なインデントだろうが綺麗に見やすく表示できてるぞ
他者に文句を言う前に自分で技術で解決しろ
クリックで1つで呼び出せるようにしてるので
インデントが崩れていようが元が変なインデントだろうが綺麗に見やすく表示できてるぞ
他者に文句を言う前に自分で技術で解決しろ
873デフォルトの名無しさん
2022/05/08(日) 16:41:56.65ID:f6r9nZo0 直貼りやインデントは置いといて
コードの中身の技術的な面で何がウンコなのかを書いてくれ
コードの中身の技術的な面で何がウンコなのかを書いてくれ
874デフォルトの名無しさん
2022/05/08(日) 17:33:44.38ID:lkdR6fP8 おっしゃる通り
技術的な議論だけにしていただきたい
表示問題はrustfmt自動適用
技術的な議論だけにしていただきたい
表示問題はrustfmt自動適用
875デフォルトの名無しさん
2022/05/08(日) 17:54:41.31ID:uCxNUubj 自動適用するuserscriptなりextensionなり作ったの?
876デフォルトの名無しさん
2022/05/08(日) 17:55:41.35ID:hxmNE5v6 めんどくせーから5chでシンタックスハイライトとrustfmtとコード実行できるようにしとけ
877デフォルトの名無しさん
2022/05/08(日) 18:08:39.11ID:pEnumwVx 各自の環境に合わせて様々な対応方法があるな
Webブラウザならブラウザ拡張でもいいしブックマークレットでもよい
専ブラは多種あり各々で可不可が違うのでノーコメント
自作ブラウザなら当然楽勝
ところでrustfmtは標準入出力かファイルだが公開ウェブサービスある?
無ければhyperで作ってローカルに動かして使う
Webブラウザならブラウザ拡張でもいいしブックマークレットでもよい
専ブラは多種あり各々で可不可が違うのでノーコメント
自作ブラウザなら当然楽勝
ところでrustfmtは標準入出力かファイルだが公開ウェブサービスある?
無ければhyperで作ってローカルに動かして使う
878デフォルトの名無しさん
2022/05/08(日) 18:16:12.83ID:hxmNE5v6 その次善策としてplaygroundで貼るという手法があります
879デフォルトの名無しさん
2022/05/08(日) 18:25:54.88ID:Qi+3klcX 俺はウェブブラウザで見てるけど間にサーバを挟んでいるのでrustfmtもそこで呼び出すことにする
playgroundからのコード自動引用もやりたいが貼られたURLからrustコードを取ってくるにはどうすればいい??
playgroundからのコード自動引用もやりたいが貼られたURLからrustコードを取ってくるにはどうすればいい??
880デフォルトの名無しさん
2022/05/08(日) 19:52:50.48ID:xEl45JiI881デフォルトの名無しさん
2022/05/08(日) 21:46:56.59ID:CfKZzM4b 「独りよがりの長いコードを繰り返し直貼りするな」
「見る側がフォーマットすればいいだけ」
なんじゃこの流れ
フォーマッタは汚物浄化装置じゃないぞ
「見る側がフォーマットすればいいだけ」
なんじゃこの流れ
フォーマッタは汚物浄化装置じゃないぞ
882デフォルトの名無しさん
2022/05/09(月) 01:40:30.37ID:LU0ROcMI プログラム板でコードが貼られて困る人はいないだろうけど
どうしても欲しい人はコード表示on/offボタンを付ければ良さげ
いずれにせよ各個人の好みの問題は各個人で解決すべき
どうしても欲しい人はコード表示on/offボタンを付ければ良さげ
いずれにせよ各個人の好みの問題は各個人で解決すべき
883デフォルトの名無しさん
2022/05/09(月) 02:58:02.40ID:ffvBu05T オナニーうんコードが問題であって直貼りが問題じゃないんですよ
884デフォルトの名無しさん
2022/05/09(月) 03:29:00.32ID:ffvBu05T 技術面に触れないと突っ込まれそうなので、>>817についての個人的な感想ですが
Tのトレイト境界に関して、数が多くなるのは仕方の無いケースもあるが、この例では単に数が多いだけでなく、
CheckedAdd等の内部実装に踏み込んだトレイトまで指定されていて、その点が良くないと思います
例えばCheckedAddを実装していなくてもFizzBuzzできる型に対して、同じ関数を使うことができない
またCheckedAddを実装しているがより効率の良いアルゴリズムで実装できる型の場合でも、この関数では効率の悪いアルゴリズムで処理するしかない
ので>>822のようにFizzBuzzできるかどうかをtraitとして持たせ、実装詳細は各型に任せるのがよいと思います
こんなことで長文書くのも馬鹿馬鹿しいね
Tのトレイト境界に関して、数が多くなるのは仕方の無いケースもあるが、この例では単に数が多いだけでなく、
CheckedAdd等の内部実装に踏み込んだトレイトまで指定されていて、その点が良くないと思います
例えばCheckedAddを実装していなくてもFizzBuzzできる型に対して、同じ関数を使うことができない
またCheckedAddを実装しているがより効率の良いアルゴリズムで実装できる型の場合でも、この関数では効率の悪いアルゴリズムで処理するしかない
ので>>822のようにFizzBuzzできるかどうかをtraitとして持たせ、実装詳細は各型に任せるのがよいと思います
こんなことで長文書くのも馬鹿馬鹿しいね
885デフォルトの名無しさん
2022/05/09(月) 03:47:02.18ID:sZTgEcAj >>884
その主張は全て間違い
checked addしなければオーバーフローしてプログラムが破綻するだけ
そしてchecked addはCPUレベルではオーバーフローフラグを見てるだけなのでコストゼロ
さらにCheckedAdd traitは任意の型に実装可能
その主張は全て間違い
checked addしなければオーバーフローしてプログラムが破綻するだけ
そしてchecked addはCPUレベルではオーバーフローフラグを見てるだけなのでコストゼロ
さらにCheckedAdd traitは任意の型に実装可能
886デフォルトの名無しさん
2022/05/09(月) 10:52:54.10ID:jFJzwB1n887デフォルトの名無しさん
2022/05/09(月) 11:04:15.31ID:2F1R2wSZ888デフォルトの名無しさん
2022/05/09(月) 11:05:16.81ID:ffvBu05T >>885
Wrapping<T>を使って無限に返すイテレータを返して利用者側でtakeさせる設計でもいいよね
Wrapping<T>を使って無限に返すイテレータを返して利用者側でtakeさせる設計でもいいよね
889デフォルトの名無しさん
2022/05/09(月) 11:09:02.87ID:oo5VwkGP890デフォルトの名無しさん
2022/05/09(月) 11:41:45.48ID:xlOpI0yW Rustにおいてchecked_add (及び同等で返し方が異なるだけのoverflowing_add) は数値を扱う上でオーバーフローを起こさせないための必須の存在
そしてchecked_addは整数型ならばadd直後のCPUのoverflowフラグを見るだけだからオーバーフローを検出するために最もコストが低く済む存在
だからその手のものを素直にコーディングすれば必ず登場
そのtrait CheckedAddを使うのは違和感なく自然に思えるが他にどんな手段があると主張している??
そしてchecked_addは整数型ならばadd直後のCPUのoverflowフラグを見るだけだからオーバーフローを検出するために最もコストが低く済む存在
だからその手のものを素直にコーディングすれば必ず登場
そのtrait CheckedAddを使うのは違和感なく自然に思えるが他にどんな手段があると主張している??
891デフォルトの名無しさん
2022/05/09(月) 12:15:35.42ID:RFFIBNHv 「ゼロからその型の最大値まで一個づつたどるイテレータ」
なんてもんに固執してるあたりがまずさいしょに珍妙
順序や範囲は他の理由で決定させて十分だと思う人は
イテレータとfizzbuzzをきれいに分離して考えてる
なんてもんに固執してるあたりがまずさいしょに珍妙
順序や範囲は他の理由で決定させて十分だと思う人は
イテレータとfizzbuzzをきれいに分離して考えてる
892デフォルトの名無しさん
2022/05/09(月) 12:26:48.80ID:niJ+za4U >>891
その件は最初にFizzBuzzの話が出てきたときに終わっていて単なる例にすぎない
話が分かりにくいならばもっと単純な例としてフィボナッチ数列イテレータでどうかな
ご存知だと思うけど足し算するだけの数列ね
その件は最初にFizzBuzzの話が出てきたときに終わっていて単なる例にすぎない
話が分かりにくいならばもっと単純な例としてフィボナッチ数列イテレータでどうかな
ご存知だと思うけど足し算するだけの数列ね
893デフォルトの名無しさん
2022/05/09(月) 12:37:12.80ID:ffvBu05T894デフォルトの名無しさん
2022/05/09(月) 12:39:13.84ID:naEAx6Bx895デフォルトの名無しさん
2022/05/09(月) 12:41:02.29ID:RFFIBNHv896デフォルトの名無しさん
2022/05/09(月) 12:53:11.04ID:3SVLm32h >>894
経験の違いじゃない?
関心事の分離を意識できないのは使い捨て感覚ででしかコードを書いたことのないからだと思う
組織で開発してたり長く維持する製品コードを書いた経験があればトイプログラムでも関数の責務くらいは意識して書くから
経験の違いじゃない?
関心事の分離を意識できないのは使い捨て感覚ででしかコードを書いたことのないからだと思う
組織で開発してたり長く維持する製品コードを書いた経験があればトイプログラムでも関数の責務くらいは意識して書くから
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」 [ぐれ★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」 [ぐれ★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 【芸能】永遠の童顔′ウ「光GENJI」53歳になった山本淳一の近影に「若いな?」「元気パワーもらえるよっ」 [湛然★]
- 安倍晋三「日本よ、世界の真ん中で咲き誇れ」高市早苗「日本外交を咲き誇らせてまいります」 [696684471]
- 日本人「憲法9条があれば侵略されないって叫んでた売国左翼のゴミどもは今どんな気分?😂wwwwww」 [441660812]
- 婚活女子(43)「アラフォーのおっさんが『同世代の女はおばさんに見える。10歳くらい歳の離れた女性がいい』と言っててドン引きしてる… [257926174]
- 女死ね
- 【悲報】東京都民さん、20過ぎてるのに自転車に乗っててて大炎上wwwwwwwwwwww女「いい歳した男で自転車に乗るのは知的障がい者だけだよ? [483447288]
- 【悲報】細田守最新作、超絶爆死しそう
