Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
前スレ
Rust Part7
http://mevius.5ch.net/test/read.cgi/tech/1563114707/
Rust part8
レス数が900を超えています。1000を超えると表示できなくなるよ。
2020/01/24(金) 11:47:52.41ID:9oO1hUHl
841デフォルトの名無しさん
2020/07/04(土) 01:28:15.59ID:MbDjr1Zt これがコンパイルエラーになる(sum::<i64>()としないといけない)のってなんでですか?
let s: i64 = (0i64..10).sum() + 10i64;
推論できる材料は十分に見えるんですけども
ちなみにこれなら通ります
let s: i64 = (0..10).sum();
let s: i64 = (0i64..10).sum() + 10i64;
推論できる材料は十分に見えるんですけども
ちなみにこれなら通ります
let s: i64 = (0..10).sum();
842デフォルトの名無しさん
2020/07/04(土) 07:36:29.64ID:mye4TJ7/ rangeはusizeだから
843デフォルトの名無しさん
2020/07/04(土) 15:11:36.89ID:O/jhkl6h >>841
ここに理由書いてるけど、詳しくはわからん
At the moment, we always refuse to guess the "self" type, so we just stop there.
For other type parameters, if Self is known, we will sometimes infer them based on Self
https://github.com/rust-lang/rust/issues/25094#issuecomment-304079316
ここに理由書いてるけど、詳しくはわからん
At the moment, we always refuse to guess the "self" type, so we just stop there.
For other type parameters, if Self is known, we will sometimes infer them based on Self
https://github.com/rust-lang/rust/issues/25094#issuecomment-304079316
844デフォルトの名無しさん
2020/07/04(土) 22:58:43.94ID:6lRd4tzg845デフォルトの名無しさん
2020/07/05(日) 01:30:45.53ID:SD7XkwQZ 今までターボフィッシュで型指定しなくても動いてたものが
新しいimpl追加によって型指定がないと動かなくなるケースがあるというのは理解できる
ただ(0i64..10).sum()のケースはiter::Iterator::sumやiter::Sumの定義から
各要素がi64だと決まってる限り新しいimplが追加されても結果の型もi64にしかならないと思うんだよね
//iter::Iterator::sum
fn sum<S>(self) -> S where Self: Sized, S: Sum<Self::Item>
{
Sum::sum(self)
}
//iter::Sum
pub trait Sum<A = Self>: Sized {
fn sum<I: Iterator<Item = A>>(iter: I) -> Self;
}
新しいimpl追加によって型指定がないと動かなくなるケースがあるというのは理解できる
ただ(0i64..10).sum()のケースはiter::Iterator::sumやiter::Sumの定義から
各要素がi64だと決まってる限り新しいimplが追加されても結果の型もi64にしかならないと思うんだよね
//iter::Iterator::sum
fn sum<S>(self) -> S where Self: Sized, S: Sum<Self::Item>
{
Sum::sum(self)
}
//iter::Sum
pub trait Sum<A = Self>: Sized {
fn sum<I: Iterator<Item = A>>(iter: I) -> Self;
}
846デフォルトの名無しさん
2020/07/05(日) 23:04:09.03ID:HzchPVMd >>845
まず、
1) inference type(推論された型)と宣言時や実行時の型は別なんで、実行時の型はあくまで推論された型の外延でしかない。
すると、別の型互換のルール(たとえば、部分多相とか)がないと互換の型とみなせない。
2) 公開された部分を推論すると将来の変更で1)から互換性を失う場合がある。
最近型推論導入した言語が公開関数のシグネチャ等を推論しないのはこの問題が理由だと思う。
>ただ(0i64..10).sum()のケースはiter::Iterator::sumやiter::Sumの定義から
>各要素がi64だと決まってる限り新しいimplが追加されても結果の型もi64にしかならないと思うんだよね
これは単にメソッド呼び出しの生成規則: expr0 ". " expr2 [Turbofish] "()" のexpr0から推論しないルールが既にあるからできないだけじゃないの?
これを拡張すると2)から互換性を失う可能性がある。公開された型と関数のシグネチャに依存してるんで。
まず、
1) inference type(推論された型)と宣言時や実行時の型は別なんで、実行時の型はあくまで推論された型の外延でしかない。
すると、別の型互換のルール(たとえば、部分多相とか)がないと互換の型とみなせない。
2) 公開された部分を推論すると将来の変更で1)から互換性を失う場合がある。
最近型推論導入した言語が公開関数のシグネチャ等を推論しないのはこの問題が理由だと思う。
>ただ(0i64..10).sum()のケースはiter::Iterator::sumやiter::Sumの定義から
>各要素がi64だと決まってる限り新しいimplが追加されても結果の型もi64にしかならないと思うんだよね
これは単にメソッド呼び出しの生成規則: expr0 ". " expr2 [Turbofish] "()" のexpr0から推論しないルールが既にあるからできないだけじゃないの?
これを拡張すると2)から互換性を失う可能性がある。公開された型と関数のシグネチャに依存してるんで。
847デフォルトの名無しさん
2020/07/06(月) 00:48:42.43ID:v1x+2Pdq ぶぶんたそー
まれいたそー
まれいたそー
848デフォルトの名無しさん
2020/07/09(木) 06:01:23.92ID:OnQC9Em2 Rustの構文を自分でPython風にしてるんだけど、このwhereのとこの構文がどうも末尾:と相性悪くてどうしたら綺麗になるか教えて欲しい。
問題点
* Self: Sizedの型指定の:と被る(引数の型はかっこに埋まってるからいい)
* 一行目の関数宣言の:があるのに二行目でもwhere使うために:がある(二行続くのは英文法的にもおかしい)
* whereの構文ルールが曖昧(改行入れたりできる) -> だから統一したい
fn sum<S>(self) -> S:
where Self: Sized, S: Sum<Self::Item>:
Sum::sum(self)
問題点
* Self: Sizedの型指定の:と被る(引数の型はかっこに埋まってるからいい)
* 一行目の関数宣言の:があるのに二行目でもwhere使うために:がある(二行続くのは英文法的にもおかしい)
* whereの構文ルールが曖昧(改行入れたりできる) -> だから統一したい
fn sum<S>(self) -> S:
where Self: Sized, S: Sum<Self::Item>:
Sum::sum(self)
849デフォルトの名無しさん
2020/07/09(木) 19:57:31.40ID:/c0BYhMm Rust にトランスパイルされる Python 風構文の言語を作っているということかな?
fn sum<S>(self) -> S
where Self(Sized), S(Sum<Self::Item>):
Sum::sum(self)
こんな感じで class の継承っぽく書くのはいかが
fn sum<S>(self) -> S
where Self(Sized), S(Sum<Self::Item>):
Sum::sum(self)
こんな感じで class の継承っぽく書くのはいかが
850デフォルトの名無しさん
2020/07/09(木) 20:52:03.73ID:OnQC9Em2 そう、そういう言語作ってる最中。
たしかにその構文もいいね!でもstruct S(i32);に見た目上だけど被るのと、トレイトのfn name<T: Num>とかも構文変える必要でてくるなぁ
個人的にはトレイトベースの言語だからT: Numは変えたくないだよね
こういうのもいいかも
fn sum<S>(self) -> S,
(Self: Sized, S: Sum<Self::Item>):
whereと同じような機能でしっくりくる構文持ってる他言語とかないのかなぁ
たしかにその構文もいいね!でもstruct S(i32);に見た目上だけど被るのと、トレイトのfn name<T: Num>とかも構文変える必要でてくるなぁ
個人的にはトレイトベースの言語だからT: Numは変えたくないだよね
こういうのもいいかも
fn sum<S>(self) -> S,
(Self: Sized, S: Sum<Self::Item>):
whereと同じような機能でしっくりくる構文持ってる他言語とかないのかなぁ
851デフォルトの名無しさん
2020/07/11(土) 09:57:59.11ID:4UmqnUG/ Haskell 風にするとかどうよ
852デフォルトの名無しさん
2020/07/11(土) 19:10:01.60ID:F8ozXmMr Winrtよく知らないんだけどWindows環境でGUI簡単にいじれるようになったの?
853デフォルトの名無しさん
2020/07/11(土) 19:28:45.72ID:9BHbJ5O9 どうせマクロ地獄だろ
854デフォルトの名無しさん
2020/07/14(火) 15:40:35.77ID:GDMj7Uve let delta = input[0] - input[1];
println!("{}{}", if delta == 0 { "" } else if delta > 0 { "-" } else { "+" }, delta.abs());
このif delta == 0 { "" } else if delta > 0 { "-" } else { "+" }の綺麗な順番とかの定石の書き方ってある?
println!("{}{}", if delta == 0 { "" } else if delta > 0 { "-" } else { "+" }, delta.abs());
このif delta == 0 { "" } else if delta > 0 { "-" } else { "+" }の綺麗な順番とかの定石の書き方ってある?
855デフォルトの名無しさん
2020/07/14(火) 16:21:46.36ID:0FZUPBc1 match delta.cmp(&0) {
std::cmp::Ordering::Equal => "",
std::cmp::Ordering::Greater => "-",
std::cmp::Ordering::Less => "+",
}
std::cmp::Ordering::Equal => "",
std::cmp::Ordering::Greater => "-",
std::cmp::Ordering::Less => "+",
}
856デフォルトの名無しさん
2020/07/14(火) 18:24:58.52ID:Ott4Q6kl n == 0の時だけ記号なしにしてそれ以外は{:+}でフォーマット
(n > 0の時だけ{:+}にするのでも結果は同じ)
(n > 0の時だけ{:+}にするのでも結果は同じ)
858デフォルトの名無しさん
2020/07/15(水) 17:09:04.17ID:xmMpR3Y8 msvcとgnuってどっちにすべきなん?
859デフォルトの名無しさん
2020/07/15(水) 20:29:35.32ID:hr2ndtrb 両方有るってことはどっちにでも出来るってこった。
どちらかが良いなんてことはない。
どちらかが良いなんてことはない。
860デフォルトの名無しさん
2020/07/15(水) 21:20:40.13ID:a3wypoik rustコンパイルできないけどな
861デフォルトの名無しさん
2020/07/16(木) 01:35:03.21ID:ky3/glay 以下のコードでクロージャclの引数に型推論が効かないのってなんでですか?
fn main() {
let vv = vec![vec![1, 2, 3]; 4];
let cl = |a, b, c, d| vv[a][b] + vv[c][d];
//error[E0282]: type annotations needed
println!("{}", cl(3usize, 1usize, 2usize, 2usize))
}
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a49b194930fcdfd894c2be4fc078be80
クロージャclの引数のところを |a: usize, b, c: usize, d| とすればコンパイルは通るのですが、aとcだけ型注釈が必要になるのも意味がわからないです
fn main() {
let vv = vec![vec![1, 2, 3]; 4];
let cl = |a, b, c, d| vv[a][b] + vv[c][d];
//error[E0282]: type annotations needed
println!("{}", cl(3usize, 1usize, 2usize, 2usize))
}
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a49b194930fcdfd894c2be4fc078be80
クロージャclの引数のところを |a: usize, b, c: usize, d| とすればコンパイルは通るのですが、aとcだけ型注釈が必要になるのも意味がわからないです
862デフォルトの名無しさん
2020/07/16(木) 23:09:40.63ID:NQlI+enB jsonをパースして、その中身に対して更に値を追加し
最後にはまたjsonでシリアライズということをやりたいのですが、
serdeだと事前に入力と出力の型を定義していないと難しいですか?
from_stringでValue型に入れて、mapのようにキー名で値を取れることは分かったのですが
そこに新たに値を追加する方法がわからないです
最後にはまたjsonでシリアライズということをやりたいのですが、
serdeだと事前に入力と出力の型を定義していないと難しいですか?
from_stringでValue型に入れて、mapのようにキー名で値を取れることは分かったのですが
そこに新たに値を追加する方法がわからないです
863デフォルトの名無しさん
2020/07/16(木) 23:23:19.49ID:iYXNZZst as_object_mut
あたりかな
あたりかな
864デフォルトの名無しさん
2020/07/17(金) 00:05:43.64ID:wlvhc7i8865デフォルトの名無しさん
2020/07/17(金) 01:59:14.04ID:ppPvs5zR866デフォルトの名無しさん
2020/07/18(土) 18:30:51.49ID:XPr1Z8D3 神がついてるから大丈夫
867デフォルトの名無しさん
2020/07/20(月) 13:18:08.21ID:8IyUCuKf actix-wevからRocketに移行します
868デフォルトの名無しさん
2020/07/21(火) 02:22:25.82ID:119VIs66 >>867
その理由は?
その理由は?
869デフォルトの名無しさん
2020/07/21(火) 18:35:05.91ID:jydcaLWL スライスから差集合を作るの際にスライスをそれぞれhashsetにしてdifference呼ぶ以外で良い書き方ありますか?
870デフォルトの名無しさん
2020/07/22(水) 00:13:53.48ID:g6BKSYlu それぞれsortして先頭から比較していく
871デフォルトの名無しさん
2020/07/22(水) 01:18:16.47ID:EHcGprvb >>869
シンメトリックじゃない単なる差集合なら
片方だけsetにしてもう片方の要素でループしながらチェックするのでもいい気がする
あと状況によってはBroom filterみたいなのを使うと高速化できるかも
シンメトリックじゃない単なる差集合なら
片方だけsetにしてもう片方の要素でループしながらチェックするのでもいい気がする
あと状況によってはBroom filterみたいなのを使うと高速化できるかも
872デフォルトの名無しさん
2020/07/22(水) 13:33:09.23ID:toRz6DNg fn aaa(s: &str) {
if s == "aaa" {
compile_error!(r"If s is "aaa", compile error!");
}
}
fn main() {
// compile error!
aaa("aaa");
// can compile
aaa("aaaaaaaa");
}
こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルになるんだけど回避方法ってないかな
if s == "aaa" {
compile_error!(r"If s is "aaa", compile error!");
}
}
fn main() {
// compile error!
aaa("aaa");
// can compile
aaa("aaaaaaaa");
}
こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルになるんだけど回避方法ってないかな
873デフォルトの名無しさん
2020/07/22(水) 13:33:41.15ID:toRz6DNg こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルになるんだけど回避方法ってないかな
↓
こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルエラーになるんだけど回避方法ってないかな
↓
こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルエラーになるんだけど回避方法ってないかな
874デフォルトの名無しさん
2020/07/22(水) 15:44:52.79ID:vLwW7fFZ875デフォルトの名無しさん
2020/07/22(水) 15:48:48.87ID:uZAjXvzm ダブルクォートがaaaの部分で外れてるのが原因とかじゃなくて?
876デフォルトの名無しさん
2020/07/22(水) 15:58:57.61ID:6Pdi74ki aaa(r#"aaa"iiii"uuuuu"#)
877デフォルトの名無しさん
2020/07/22(水) 16:04:28.78ID:toRz6DNg >>875
ごめん。ここに貼る用のデバッグコメ。
そこ直したら本題の条件分岐のコンパイルエラーにならないのがでてくる
compile_error!(r#"If s is "aaa", compile error!"#);
ごめん。ここに貼る用のデバッグコメ。
そこ直したら本題の条件分岐のコンパイルエラーにならないのがでてくる
compile_error!(r#"If s is "aaa", compile error!"#);
878デフォルトの名無しさん
2020/07/22(水) 18:44:16.24ID:EHcGprvb compile_error!は条件付きコンパイルかマクロでしか使えないんじゃ?
compile_error!と記述してる行がコンパイルするコードに含まれることになったらコンパイルエラー
マクロを展開する段階では変数の値を評価できないから
文字列を受け取る関数に対して特定の文字列を渡すコードがあったらコンパイルエラーってのは無理な気がする
compile_error!と記述してる行がコンパイルするコードに含まれることになったらコンパイルエラー
マクロを展開する段階では変数の値を評価できないから
文字列を受け取る関数に対して特定の文字列を渡すコードがあったらコンパイルエラーってのは無理な気がする
879デフォルトの名無しさん
2020/07/22(水) 22:19:16.93ID:ItqkS36e aaaを手続きマクロにすればできるとは思うけど。
880デフォルトの名無しさん
2020/07/23(木) 01:38:31.65ID:es6swX3J 最近RustのSlackでも出てきた福野泰介ってやつ声でかいよな
こいつどのコミュニティでも何かしら主張して目障りだわ
こいつどのコミュニティでも何かしら主張して目障りだわ
881デフォルトの名無しさん
2020/07/23(木) 01:41:56.15ID:5yzO6ql9 Ubuntu Japanese Team に言いつけて潰してもらおうぜ
882デフォルトの名無しさん
2020/07/23(木) 18:56:28.53ID:Qx3jp5Nz 環境はMacOS Catalina, Rustは1.45.0です
今弄ってる物(https://github.com/Nercury/rust-and-opengl-lessons)で
/lib/gl/src/lib.rs内に
include!(concat!(env!("OUT_DIR"), "/binding.rs"));
というのがあるのですがですがcargo buildすると
this error originates in a macro
error: couldn't read /Users/Path/target/debug/build/gl-71effbf83f5b03a9/out/binding.rs: No such file or directory (os error 2)
と表示されます
https://github.com/rust-analyzer/rust-analyzer/issues/1964
https://github.com/rust-skia/rust-skia/issues/10
などを見たのですが具体的な修正がわかりませんでした。
Rustは最近始めたばかりでincludeマクロやcargoの仕組みなどまだあまり詳しくありません
このinclude!を成功させる方法を教えてください
迷惑をかけてしまうかもしれませんがご教授お願いします
今弄ってる物(https://github.com/Nercury/rust-and-opengl-lessons)で
/lib/gl/src/lib.rs内に
include!(concat!(env!("OUT_DIR"), "/binding.rs"));
というのがあるのですがですがcargo buildすると
this error originates in a macro
error: couldn't read /Users/Path/target/debug/build/gl-71effbf83f5b03a9/out/binding.rs: No such file or directory (os error 2)
と表示されます
https://github.com/rust-analyzer/rust-analyzer/issues/1964
https://github.com/rust-skia/rust-skia/issues/10
などを見たのですが具体的な修正がわかりませんでした。
Rustは最近始めたばかりでincludeマクロやcargoの仕組みなどまだあまり詳しくありません
このinclude!を成功させる方法を教えてください
迷惑をかけてしまうかもしれませんがご教授お願いします
883デフォルトの名無しさん
2020/07/23(木) 19:05:44.31ID:es6swX3J 福野泰介はたしかにどこでも目立つ。
自己顕示欲もあそこまでいったら面白い、反面教師として役立つ
自己顕示欲もあそこまでいったら面白い、反面教師として役立つ
884デフォルトの名無しさん
2020/07/23(木) 21:20:06.43ID:DkkvFejZ >>882
lib/gl/build.rsでOUT_DIRにbinding.rsを作成してる
ビルドスクリプトが意図した通りに動いているのか確認するために
build.rsを変更してbinding.rsのフルパスをprintlnでもするようにして
cargo build -vvしてみるといいと思う
ビルドスクリプトについて詳細知りたければこの辺読んで
https://doc.rust-lang.org/cargo/reference/build-script-examples.html
lib/gl/build.rsでOUT_DIRにbinding.rsを作成してる
ビルドスクリプトが意図した通りに動いているのか確認するために
build.rsを変更してbinding.rsのフルパスをprintlnでもするようにして
cargo build -vvしてみるといいと思う
ビルドスクリプトについて詳細知りたければこの辺読んで
https://doc.rust-lang.org/cargo/reference/build-script-examples.html
885デフォルトの名無しさん
2020/07/24(金) 00:48:59.83ID:j+hLU6yH886デフォルトの名無しさん
2020/07/24(金) 10:22:52.41ID:c87Ipt6p 同じサーバー内でポート別にクライアント用サーバー(Nuxt)とAPI用サーバー(Rust)立ち上げるのってどう思う?
クライアント用サーバーは初回しか性能響かないからあれだけど、Rustの方が断然速いし、SPAだからルートの設定も全然しなくていいし、Rustの方でフロントページも返した方がいいんじゃないかと思ってるんだけども
要はRustを実行すればポート別に2つサーバーが立ち上がるようにするってこと
クライアント用サーバーは初回しか性能響かないからあれだけど、Rustの方が断然速いし、SPAだからルートの設定も全然しなくていいし、Rustの方でフロントページも返した方がいいんじゃないかと思ってるんだけども
要はRustを実行すればポート別に2つサーバーが立ち上がるようにするってこと
887デフォルトの名無しさん
2020/07/25(土) 18:01:19.70ID:n+xx7yT/ RocketってRust公式サイトにも使われてるのか
迷ったらRocketで良さそうだな
迷ったらRocketで良さそうだな
888デフォルトの名無しさん
2020/07/26(日) 03:19:09.22ID:XCGG5OQ8 diesel使いづらくない?
889デフォルトの名無しさん
2020/07/26(日) 18:57:03.68ID:uWZribv0 rustcの-C llvm-args=が取り得るオプションの説明ってどこかに書いてある?
clangのttps://clang.llvm.org/docs/ClangCommandLineReference.html#x86
あたりがそれっぽいけど説明が全くないのでデフォルト値も効果もよく判らない
clangのttps://clang.llvm.org/docs/ClangCommandLineReference.html#x86
あたりがそれっぽいけど説明が全くないのでデフォルト値も効果もよく判らない
890デフォルトの名無しさん
2020/07/26(日) 22:31:29.89ID:T2XYMYOv >>889
ここに書いてあるけど'--help'を渡せば一覧表示されるみたいよ
https://doc.rust-lang.org/rustc/codegen-options/index.html#llvm-args
$ rustc -C llvm-args='--help'
ここに書いてあるけど'--help'を渡せば一覧表示されるみたいよ
https://doc.rust-lang.org/rustc/codegen-options/index.html#llvm-args
$ rustc -C llvm-args='--help'
891デフォルトの名無しさん
2020/07/26(日) 23:02:23.88ID:XCGG5OQ8 あるモジュールクラスを別のモジュールで使いたい場合ってどう宣言するのが正しいの?
正直ドキュメント読んでも分からん
正直ドキュメント読んでも分からん
892デフォルトの名無しさん
2020/07/26(日) 23:58:47.45ID:uWZribv0 >>890
サンキュ。そう使うのかよw うちの環境では
>rustc -C llvm-args=--help ←'を付けると怒られる
でそれっぽいのが得られました。amd64で使用命令を選択するようなオプションは無いのか・・・
サンキュ。そう使うのかよw うちの環境では
>rustc -C llvm-args=--help ←'を付けると怒られる
でそれっぽいのが得られました。amd64で使用命令を選択するようなオプションは無いのか・・・
893デフォルトの名無しさん
2020/07/27(月) 00:46:16.95ID:TQCIWmFu --helpの最後に出てたけど
利用可能なオプションを全部表示するには
llvm-args=--help-hiddenってするみたい
利用可能なオプションを全部表示するには
llvm-args=--help-hiddenってするみたい
894デフォルトの名無しさん
2020/07/27(月) 09:47:21.61ID:s6eJseAH chronoのnext_monthないのってどう実現すればできる?
895デフォルトの名無しさん
2020/07/27(月) 10:10:01.73ID:0SvTsOI7 >>894
そもそもnext_monthに何を期待するかによると思うが。30日後?31日後?翌月の同じ日?それが存在しない場合は?とか。その辺がはっきりすれば、その通りに実装すればいい。
そもそもnext_monthに何を期待するかによると思うが。30日後?31日後?翌月の同じ日?それが存在しない場合は?とか。その辺がはっきりすれば、その通りに実装すればいい。
896デフォルトの名無しさん
2020/07/27(月) 10:18:30.24ID:0SvTsOI7897デフォルトの名無しさん
2020/07/27(月) 16:16:44.20ID:s6eJseAH >>896
ありがとう、結局next_month自分で実装したけど、かなり頻繁に使われる類のメソッドだから正直きついな
with_monthもoptionで返すから31 -> 30の次月遷移したとしても安全だから実装しない理由が分かんないな
chronoは変なとこには手回ってるしよくわからん
ありがとう、結局next_month自分で実装したけど、かなり頻繁に使われる類のメソッドだから正直きついな
with_monthもoptionで返すから31 -> 30の次月遷移したとしても安全だから実装しない理由が分かんないな
chronoは変なとこには手回ってるしよくわからん
898デフォルトの名無しさん
2020/07/27(月) 18:03:20.70ID:SSpP96W4 >>897
issueはあるけど別に誰かが反対しているわけでもなく、
単に誰も実装してないだけじゃない?
PR出してみればいいと思うけど。
https://github.com/chronotope/chrono/issues/290
issueはあるけど別に誰かが反対しているわけでもなく、
単に誰も実装してないだけじゃない?
PR出してみればいいと思うけど。
https://github.com/chronotope/chrono/issues/290
899デフォルトの名無しさん
2020/07/28(火) 16:26:39.82ID:0KPYC4VC900デフォルトの名無しさん
2020/07/29(水) 11:56:30.09ID:blHj/j43 ed25519の公開鍵のssh-ed25519 ******の部分が欲しくて、ed25519_dalekっていうクレートで鍵作ってるんだけどPublicKey構造体のas_bytesでとってくるバイト列をstr::from_utf8でしてもエラーが出て秘密鍵の***部分にならないんだけど、どうすればいいか分かる?
https://docs.rs/ed25519-dalek/1.0.0-pre.4/ed25519_dalek/struct.PublicKey.html
https://docs.rs/ed25519-dalek/1.0.0-pre.4/ed25519_dalek/struct.PublicKey.html
901デフォルトの名無しさん
2020/07/29(水) 20:03:32.01ID:B1rudV7D 1byteずつ print!("{:02x}", b) するとかではなく?
902デフォルトの名無しさん
2020/07/29(水) 21:31:44.28ID:4K5iZ0U7 >>900
str::from_utf8でエラーになるのは
0~127までのUTF-8互換のASCII以外の文字が含まれてるからでは?
pemで見れる公開鍵のssh-ed25519 ******の部分は
keyの種別とDERエンコードしたkeyの値をBase64にしたものらしい
str::from_utf8でエラーになるのは
0~127までのUTF-8互換のASCII以外の文字が含まれてるからでは?
pemで見れる公開鍵のssh-ed25519 ******の部分は
keyの種別とDERエンコードしたkeyの値をBase64にしたものらしい
903デフォルトの名無しさん
2020/07/30(木) 13:54:57.65ID:AECjseqQ904デフォルトの名無しさん
2020/07/31(金) 22:54:06.06ID:Emo7hM/W bindgenにwindowsはllvmのプリビルドバイナリをインストールしなさいと書いてあるけど、
LIBCLANG_PATH設定し忘れるとwinのプリビルドバイナリには含まれてないllvm-configを使って<LLVM_ROOT>/binまでのパスを探すんで
llvm-configがないって怒られる罠がある。
LIBCLANG_PATHタイポして時間潰してしまった。
LIBCLANG_PATH設定し忘れるとwinのプリビルドバイナリには含まれてないllvm-configを使って<LLVM_ROOT>/binまでのパスを探すんで
llvm-configがないって怒られる罠がある。
LIBCLANG_PATHタイポして時間潰してしまった。
905デフォルトの名無しさん
2020/08/01(土) 14:02:57.08ID:cK8sGWsa やっぱactixよりrocketだな
906デフォルトの名無しさん
2020/08/01(土) 14:09:11.29ID:sGuB7emE >>905
その理由は?
その理由は?
907デフォルトの名無しさん
2020/08/01(土) 15:02:20.03ID:Sq3FCv8n なんか速そうじゃん
908デフォルトの名無しさん
2020/08/01(土) 15:19:22.53ID:cK8sGWsa >>906
ドキュメントがしっかりしてそう
ドキュメントがしっかりしてそう
909デフォルトの名無しさん
2020/08/01(土) 16:43:51.04ID:Gnfef8LF unsafeの個数が少ない方が勝ちって事でいいんじゃない?
910デフォルトの名無しさん
2020/08/01(土) 22:13:51.53ID:cK8sGWsa rocketってmultipartサポートしてないのか
911小石茶輝
2020/08/01(土) 23:31:58.80ID:hdo7vbOv unsafe という機能があるのは unsafe が必要だからです。
設計方針に対して必要以上に unsafe があるのはダメですが、
少なければ少ないほど良いというわけでもありません。
たとえば C++ を使っているときだって、
グラフィックドライバを書くときとかは
どうしたって (C++ 的には) 行儀の悪い書き方になってしまうでしょう。
行儀の悪い部分はなるべく低レイヤに押し込めて、
ロジック層が綺麗になるようにするのが望ましいなどといった習慣はありますが、
どの程度にするかの程度問題は設計方針によります。
actix は rocket よりも unsafe を多用してはいますが、
意図のはっきりした unsafe です。
あまりにも unsafe が多すぎるならもう Rust 使うのやめろよと思うかもしれませんが、
行儀の悪い書き方 (unsafe) がより明示的であるというだけでも
C++ よりは少しマシでしょう。
設計方針に対して必要以上に unsafe があるのはダメですが、
少なければ少ないほど良いというわけでもありません。
たとえば C++ を使っているときだって、
グラフィックドライバを書くときとかは
どうしたって (C++ 的には) 行儀の悪い書き方になってしまうでしょう。
行儀の悪い部分はなるべく低レイヤに押し込めて、
ロジック層が綺麗になるようにするのが望ましいなどといった習慣はありますが、
どの程度にするかの程度問題は設計方針によります。
actix は rocket よりも unsafe を多用してはいますが、
意図のはっきりした unsafe です。
あまりにも unsafe が多すぎるならもう Rust 使うのやめろよと思うかもしれませんが、
行儀の悪い書き方 (unsafe) がより明示的であるというだけでも
C++ よりは少しマシでしょう。
912デフォルトの名無しさん
2020/08/06(木) 21:31:08.70ID:3hCyvjau rust案件が出てこないのは何で?
913小石茶輝
2020/08/06(木) 23:35:19.16ID:m6Z7F3X/ 出てますよ。
あなたがそれをキャッチする立場にないだけです。
あなたがそれをキャッチする立場にないだけです。
914デフォルトの名無しさん
2020/08/08(土) 01:19:04.76ID:4kKr75Ow stdの中でこれは外部ライブラリにした方がいいんじゃないかなって思うやつある?
逆に外部ライブラリからstdにした方がいいんじゃないかってやつとかもある?
逆に外部ライブラリからstdにした方がいいんじゃないかってやつとかもある?
915デフォルトの名無しさん
2020/08/08(土) 06:00:59.71ID:6YjyRljP >>914
乱数ライブラリが標準ライブラリに入ってない言語とか他にあんの?
乱数ライブラリが標準ライブラリに入ってない言語とか他にあんの?
916デフォルトの名無しさん
2020/08/09(日) 00:20:40.65ID:ayHdPpdd 乱数は用途によって必要な性質が色々だからなぁ。
どの分野を優遇すべきかってのは自明ではないでしょ。
全部盛りにするのも Rust 的ではないし。
でも、どの乱数ライブラリを使うにしても同じようなインターフェイスだとありがたいので、
乱数ライブラリが満たすべき標準的なトレイトが提供されて欲しいし、
そのサンプル的な位置づけでひとつくらいは乱数ライブラリが入っていてもいいかなとは思う。
どの分野を優遇すべきかってのは自明ではないでしょ。
全部盛りにするのも Rust 的ではないし。
でも、どの乱数ライブラリを使うにしても同じようなインターフェイスだとありがたいので、
乱数ライブラリが満たすべき標準的なトレイトが提供されて欲しいし、
そのサンプル的な位置づけでひとつくらいは乱数ライブラリが入っていてもいいかなとは思う。
>>916
MT だけでいいと思うのですが
MT だけでいいと思うのですが
918はちみつ餃子 ◆8X2XSCHEME
2020/08/09(日) 00:43:58.48ID:ayHdPpdd >>918
確かに暗号にMTを使うのはダメですね、暗号用には crypt-MT がありますね
確かに暗号にMTを使うのはダメですね、暗号用には crypt-MT がありますね
920デフォルトの名無しさん
2020/08/09(日) 20:40:18.77ID:mU0jSAp3 今はもうMTもそこまで・・・って話じゃないっけ
randクレート見るとそんなこと書いてあったような
randクレート見るとそんなこと書いてあったような
921デフォルトの名無しさん
2020/08/09(日) 20:55:04.69ID:wx6Xp3NP 他の言語だって完璧な乱数だと思ってなくても
利用者の利便性を考えて標準ライブラリに含めてるんだろ
それが無いRustは変
利用者の利便性を考えて標準ライブラリに含めてるんだろ
それが無いRustは変
922デフォルトの名無しさん
2020/08/10(月) 00:22:38.94ID://dLtD59 今どきMT法なんか使わん。
>乱数ライブラリが満たすべき標準的なトレイトが提供されて欲しいし、
rand_coreがそれに当たるけどcoreだけだとバイト配列しか取得できんので分布器に生成器渡せん。
未知の生成器の実装すべて含めるのは無理、既知のものに絞っても要求する特性が人によって違うから標準にするのは無理。
結局はこうなるが、俺も標準ライブラリに乱数ほしい。
>乱数ライブラリが満たすべき標準的なトレイトが提供されて欲しいし、
rand_coreがそれに当たるけどcoreだけだとバイト配列しか取得できんので分布器に生成器渡せん。
未知の生成器の実装すべて含めるのは無理、既知のものに絞っても要求する特性が人によって違うから標準にするのは無理。
結局はこうなるが、俺も標準ライブラリに乱数ほしい。
923デフォルトの名無しさん
2020/08/10(月) 01:32:59.38ID:5CSXOdci cargo使ってるから別ライブラリでもあまり困らない
こと乱数に関してはデファクトスタンダードのcraete決まってるし迷うことないしね
標準ライブラリに入ってて欲しいのは初学者がcrate知らないとか探すのが手間だとか、コンパイルタイムが延びるのが嫌だとか、そういう理由?
こと乱数に関してはデファクトスタンダードのcraete決まってるし迷うことないしね
標準ライブラリに入ってて欲しいのは初学者がcrate知らないとか探すのが手間だとか、コンパイルタイムが延びるのが嫌だとか、そういう理由?
924デフォルトの名無しさん
2020/08/10(月) 02:16:28.69ID:PbB9rIkO stdに入れて欲しいのはrandよりregexだな
標準ライブラリとして責任もってメンテされていくものなのかどうかが重要
標準ライブラリとして責任もってメンテされていくものなのかどうかが重要
925デフォルトの名無しさん
2020/08/10(月) 03:21:04.11ID:5WLgK92c926デフォルトの名無しさん
2020/08/10(月) 04:22:44.62ID:qbs6FNC5 Authors のところが The Rust Project Developers ってなってるやつは
事実上の標準みたいなもんと思ってええんけ?
将来の互換性が保証されるかどうかはともかくとして Rust と足並みがそろっているとは
思っていいよね?
事実上の標準みたいなもんと思ってええんけ?
将来の互換性が保証されるかどうかはともかくとして Rust と足並みがそろっているとは
思っていいよね?
927デフォルトの名無しさん
2020/08/10(月) 05:17:58.40ID:ELRN+pEU jsonrpc使ってみた。不可解な実装でワロタ
928デフォルトの名無しさん
2020/08/10(月) 23:12:44.03ID:xrY++dmg 外に出されたunicode系ライブラリが更新止まってていつかstdがサポートするunicodeのバージョンと互換性失うんじゃないかと思う。
>>926
事実上の標準っていうかc++のboostみたいなもんだけど足並み揃ってるかは別。
>>926
事実上の標準っていうかc++のboostみたいなもんだけど足並み揃ってるかは別。
929デフォルトの名無しさん
2020/08/11(火) 13:18:54.05ID:vv5Ejmf9 use std::ops::{Rem, AddAssign};
pub fn get_days_of_month<T: Rem>(year: T, month: u32) -> u32 {
match month {
2 => if is_leap_year(year) { 29 } else { 28 },
4 | 6 | 9 | 11 => 30,
_ => 31,
}
}
pub fn is_leap_year<T: Rem>(year: T) -> bool {
match ((year % 100 as T) as i32, (year % 400 as T) as i32) {
(_, 0) => true,
(0, _) => false,
_ => year % 4 == 0,
}
}
pub fn next_day<N, T: AddAssign + Rem>(mut year: T, mut month: u32, mut day: u32) -> (T, u32, u32) {
let days_of_month = get_days_of_month(year, month);
day += 1;
if day > days_of_month {
month += 1;
day = 1;
}
if month > 12 {
year += 1;
month = 1;
}
(year, month, day)
}
non-primitive castエラーが出るんだけどどうすれば解決できる?
1 as Tでもできないし、1.parse()はstrじゃないから出来ない
pub fn get_days_of_month<T: Rem>(year: T, month: u32) -> u32 {
match month {
2 => if is_leap_year(year) { 29 } else { 28 },
4 | 6 | 9 | 11 => 30,
_ => 31,
}
}
pub fn is_leap_year<T: Rem>(year: T) -> bool {
match ((year % 100 as T) as i32, (year % 400 as T) as i32) {
(_, 0) => true,
(0, _) => false,
_ => year % 4 == 0,
}
}
pub fn next_day<N, T: AddAssign + Rem>(mut year: T, mut month: u32, mut day: u32) -> (T, u32, u32) {
let days_of_month = get_days_of_month(year, month);
day += 1;
if day > days_of_month {
month += 1;
day = 1;
}
if month > 12 {
year += 1;
month = 1;
}
(year, month, day)
}
non-primitive castエラーが出るんだけどどうすれば解決できる?
1 as Tでもできないし、1.parse()はstrじゃないから出来ない
930デフォルトの名無しさん
2020/08/11(火) 13:40:48.45ID:+G0SPKi4 >>929
num-traitsのOneで制約すればT::one()でT型の1が得られる。
num-traitsのOneで制約すればT::one()でT型の1が得られる。
931デフォルトの名無しさん
2020/08/11(火) 17:18:59.34ID:vv5Ejmf9932デフォルトの名無しさん
2020/08/11(火) 18:03:39.15ID:9N1UW9Um933デフォルトの名無しさん
2020/08/13(木) 18:54:36.47ID:ilszh1HB ゲーム開発言語はrustに移行されるかな?
934デフォルトの名無しさん
2020/08/13(木) 23:00:02.19ID:XvzayrDj プログラミング言語「Rust」、Linuxカーネルでの採用の道を模索
https://japan.zdnet.com/article/35157012/
https://japan.zdnet.com/article/35157012/
935デフォルトの名無しさん
2020/08/14(金) 22:24:07.75ID:O4QC6Gpt936デフォルトの名無しさん
2020/08/15(土) 03:05:14.85ID:py5/TuN/ ラズパイとかでコンパイルすると糞遅いのなんとかならんかな
937デフォルトの名無しさん
2020/08/15(土) 06:26:45.05ID:KV0ftL1X 禁断のCPU換装とかないの?
DOS/Vパワーリポートとか買ってみたら。
DOS/Vパワーリポートとか買ってみたら。
938デフォルトの名無しさん
2020/08/15(土) 06:47:50.15ID:c5MlwM8B >>936
クロスコンパイルすれば?
クロスコンパイルすれば?
939デフォルトの名無しさん
2020/08/15(土) 21:53:54.93ID:aUDFhJGy というよりなんでセルフコンパイルするんや?
940デフォルトの名無しさん
2020/08/15(土) 23:19:51.01ID:aMnBEbVz rustじゃないけど適当な設定で大きいライブラリビルドしたら過熱でラズパイ落ちた事あるわ
941デフォルトの名無しさん
2020/08/17(月) 18:33:01.49ID:L4/FmhKh Rより低いRust...
https://japan.zdnet.com/article/35158190/
https://japan.zdnet.com/article/35158190/
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- ひろゆき氏 高市首相の台湾有事発言 「日本が得たものあまりない。経済的なマイナスは明確に存在」 [冬月記者★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- Redditの外国人たち、なぜか日本の江戸時代の『五人組』システムに興味津々。めっちゃ↑付いてるのに日本人の俺が知らない😰 [718678614]
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
- 置き配受け取り人さん、配達員に冷え冷えの飲み物を差し入れしネット大荒れ、ちょっとした善意なのにどうして😭 [152212454]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- ワキから鉛筆削りの匂いがする謎の奇病にかかってる
- 【悲報】秋元康「女性アイドルグループはもうオワコン。会いにいける男性アイドルグループを作る」 [455031798]
