公式
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
レス数が1000を超えています。これ以上書き込みはできません。
2022/02/12(土) 01:24:16.59ID:XYE+Rws6
978デフォルトの名無しさん
2022/05/12(木) 13:14:32.88ID:NwXtRBWx979デフォルトの名無しさん
2022/05/12(木) 14:13:04.15ID:gDKYWhkK >>976は悪いお手本が盛り沢山
真似しちゃダメだぞ
真似しちゃダメだぞ
980デフォルトの名無しさん
2022/05/12(木) 14:58:33.47ID:cuIcFT6k Rangeをpanicしないように扱う方法ないの?
CheckedRangeみたいなやつとか
CheckedRangeみたいなやつとか
981デフォルトの名無しさん
2022/05/12(木) 15:09:03.82ID:GA/DPWpW >>979
どのへんが問題?
どのへんが問題?
982デフォルトの名無しさん
2022/05/12(木) 15:48:05.20ID:mdPskXmt >>978
じゃcharでやってみたら?
じゃcharでやってみたら?
983デフォルトの名無しさん
2022/05/12(木) 15:51:11.85ID:DUB7tBF0984デフォルトの名無しさん
2022/05/12(木) 16:26:15.18ID:nCP6t6gv >>982
もっと厳しそうなStringで>>976をやってみた
Zの個数で数を表すZ
#[derive(Debug,Clone)]
struct Z(String);
impl std::fmt::Display for Z {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
impl From<usize> for Z {
fn from(n: usize) -> Self {
Z("Z".repeat(n))
}
}
impl std::ops::Add for Z {
type Output = Self;
fn add(self, rhs: Self) -> Self {
Z(self.0.clone() + &(rhs.0))
}
}
impl num::CheckedAdd for Z {
fn checked_add(&self, rhs: &Self) -> Option<Self> {
Some(Z(self.0.clone() + &(rhs.0)))
}
}
fn main() {
countup(Z::from(1)).for_each(|n| println!("{n}"));
}
ちゃんと動作してZの数が増えて行くんだな
もっと厳しそうなStringで>>976をやってみた
Zの個数で数を表すZ
#[derive(Debug,Clone)]
struct Z(String);
impl std::fmt::Display for Z {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
impl From<usize> for Z {
fn from(n: usize) -> Self {
Z("Z".repeat(n))
}
}
impl std::ops::Add for Z {
type Output = Self;
fn add(self, rhs: Self) -> Self {
Z(self.0.clone() + &(rhs.0))
}
}
impl num::CheckedAdd for Z {
fn checked_add(&self, rhs: &Self) -> Option<Self> {
Some(Z(self.0.clone() + &(rhs.0)))
}
}
fn main() {
countup(Z::from(1)).for_each(|n| println!("{n}"));
}
ちゃんと動作してZの数が増えて行くんだな
985デフォルトの名無しさん
2022/05/12(木) 16:52:07.33ID:+mjBHcs3 >>984
それは独自の型であってStringではないよ
上限までイテレートするのに上限が無い型を実装して何がしたいのかわからないが
countup(Z::from(usize::MAX))とかで確認した?
それは独自の型であってStringではないよ
上限までイテレートするのに上限が無い型を実装して何がしたいのかわからないが
countup(Z::from(usize::MAX))とかで確認した?
986デフォルトの名無しさん
2022/05/12(木) 16:58:46.77ID:lxDeZNmy987デフォルトの名無しさん
2022/05/12(木) 17:11:29.21ID:qNZB+StZ988デフォルトの名無しさん
2022/05/12(木) 17:20:14.27ID:MHUEjPJH989デフォルトの名無しさん
2022/05/12(木) 17:27:09.04ID:x3l/UcP6990デフォルトの名無しさん
2022/05/12(木) 17:46:52.13ID:yYN31ZGU >>976
上限のある型を作ってトレイト境界を満たしてやるとちゃんと上限で止まるんだな
#[derive(Debug,Clone)]
struct FiveBits(usize);
impl FiveBits {
fn make(n: usize) -> Option<FiveBits> {
(n >> 5 == 0).then(|| FiveBits(n))
}
}
impl TryFrom<usize> for FiveBits {
type Error = &'static str;
fn try_from(n: usize) -> Result<Self, Self::Error> {
FiveBits::make(n).ok_or("overflow")
}
}
impl std::ops::Add for FiveBits {
type Output = Self;
fn add(self, rhs: Self) -> Self {
FiveBits::make(self.0 + rhs.0).unwrap()
}
}
impl num::CheckedAdd for FiveBits {
fn checked_add(&self, rhs: &Self) -> Option<Self> {
FiveBits::make(self.0 + rhs.0)
}
}
impl std::fmt::Display for FiveBits {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
上限のある型を作ってトレイト境界を満たしてやるとちゃんと上限で止まるんだな
#[derive(Debug,Clone)]
struct FiveBits(usize);
impl FiveBits {
fn make(n: usize) -> Option<FiveBits> {
(n >> 5 == 0).then(|| FiveBits(n))
}
}
impl TryFrom<usize> for FiveBits {
type Error = &'static str;
fn try_from(n: usize) -> Result<Self, Self::Error> {
FiveBits::make(n).ok_or("overflow")
}
}
impl std::ops::Add for FiveBits {
type Output = Self;
fn add(self, rhs: Self) -> Self {
FiveBits::make(self.0 + rhs.0).unwrap()
}
}
impl num::CheckedAdd for FiveBits {
fn checked_add(&self, rhs: &Self) -> Option<Self> {
FiveBits::make(self.0 + rhs.0)
}
}
impl std::fmt::Display for FiveBits {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
991デフォルトの名無しさん
2022/05/12(木) 17:51:39.83ID:9RFeMFB6992デフォルトの名無しさん
2022/05/12(木) 17:57:40.16ID:W5nxdksy993デフォルトの名無しさん
2022/05/12(木) 18:12:51.67ID:evRfTR7c >>789
> fn fizzbuzz(&self) -> FizzBuzzResult<&Self> {
その関数を使わせてもらってイテレータにしようと思ったら
参照を返しているために非Copy型に対して上手くいかなくて手詰まってしまった
> fn fizzbuzz(&self) -> FizzBuzzResult<&Self> {
その関数を使わせてもらってイテレータにしようと思ったら
参照を返しているために非Copy型に対して上手くいかなくて手詰まってしまった
994デフォルトの名無しさん
2022/05/12(木) 18:18:34.21ID:dV7c/A+s まーた汚部屋になってきたなー
995デフォルトの名無しさん
2022/05/12(木) 18:28:55.30ID:cuIcFT6k996デフォルトの名無しさん
2022/05/13(金) 16:05:11.97ID:QlGabNLh 梅丸
997デフォルトの名無しさん
2022/05/13(金) 16:05:37.61ID:B3PTMj0D 梅錦
998デフォルトの名無しさん
2022/05/13(金) 16:06:40.24ID:iApzi+VJ 梅初め
999デフォルトの名無しさん
2022/05/13(金) 16:07:11.25ID:cgq/NsH4 梅おろし
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 90日 14時間 44分 13秒
新しいスレッドを立ててください。
life time: 90日 14時間 44分 13秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★7 [BFU★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 高市首相が異例の“買春行為の罰則化の検討”に言及…世界では“買う側”に罰則を科すのが先進国のスタンダード ★2 [樽悶★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ158
- VIPの男とオフしようとしたけど
- (*´ω`*)明日の映画なんだけど人数分チケット取っといて!( ・᷄ὢ・᷅ )わかった!みんなで映画行くの楽しみ!
- 【ガチ正論】一般人「中国に規制制裁されて、『中国ムカつく』じゃなくて矛先が『許さんぞ高市』になってる奴、頭おかしいの?」 ★2 [153490809]
- おしっこしてたらたまにうんこもちょろっと出ちゃうんだけどガチでどうしたら防げるの?
- 琴桜が来場所の角番を回避するためには豊昇龍、大の里、安青錦のいずれか1人から勝たないとならない
