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
■ このスレッドは過去ログ倉庫に格納されています
2020/01/24(金) 11:47:52.41ID:9oO1hUHl
525デフォルトの名無しさん
2020/05/12(火) 19:18:36.86ID:j2+Ql/jy526デフォルトの名無しさん
2020/05/12(火) 21:20:08.42ID:rr7jvTFY527デフォルトの名無しさん
2020/05/12(火) 21:34:24.99ID:FmqTBss/ >>526
確かに勘違いしてた。今の文法だとmut x: &i32だった。
なので今は
x: &mut i32
mut x: &i32
を
x: mut &i32
mut x: &i32
にしても別に問題はないのか。なんとなく両者の区別はしにくくなってる気はするけど。
確かに勘違いしてた。今の文法だとmut x: &i32だった。
なので今は
x: &mut i32
mut x: &i32
を
x: mut &i32
mut x: &i32
にしても別に問題はないのか。なんとなく両者の区別はしにくくなってる気はするけど。
528デフォルトの名無しさん
2020/05/12(火) 21:45:24.39ID:l1cRSbJI529デフォルトの名無しさん
2020/05/12(火) 22:06:14.36ID:rr7jvTFY 本当の理由は知らないけど、その区別しにくくなるってところがポイントだったんじゃないのかな
mut i32はコンパイルエラーだろうけど、今はエラーメッセージ見ても
&mutがあれば型、mutがあれば変数のmutabilityって詳細読まなくてもすぐ分かる
慣れかもしれんが俺は今の文法のほうが読みやすいと感じる
let mut x: &mut &i32
let mut x: mut &&i32
let mut x: &mut &mut i32
let mut x: mut mut &&i32
mut i32はコンパイルエラーだろうけど、今はエラーメッセージ見ても
&mutがあれば型、mutがあれば変数のmutabilityって詳細読まなくてもすぐ分かる
慣れかもしれんが俺は今の文法のほうが読みやすいと感じる
let mut x: &mut &i32
let mut x: mut &&i32
let mut x: &mut &mut i32
let mut x: mut mut &&i32
530デフォルトの名無しさん
2020/05/12(火) 22:08:09.55ID:tQMnmew/ tokio使ってる人いる?
531デフォルトの名無しさん
2020/05/12(火) 22:36:30.89ID:RlXY9TUm532デフォルトの名無しさん
2020/05/13(水) 00:29:51.86ID:HS9NS6av actix-webでも中で使ってるしtokio単体でも使ってる
533デフォルトの名無しさん
2020/05/13(水) 01:28:10.47ID:IZIPIE/9 非同期に拘らないならstd::net使えばよくない
534デフォルトの名無しさん
2020/05/13(水) 14:58:18.04ID:n4QRUOl7 今の主流は tokio か async-std だけど io-uring 対応でまた勢力図に変化が起きたりするのだろうか
535デフォルトの名無しさん
2020/05/13(水) 22:46:58.63ID:0Q+bejh+ 乗り遅れた。
tokioは使ってないけどデスクトップでnon-blocking file ioが欲しい。ブロックしたら並列の意味がない。
>>531
ランタイムと付いてくるapiで肥大化するのが問題なんだよね。
tokioは使ってないけどデスクトップでnon-blocking file ioが欲しい。ブロックしたら並列の意味がない。
>>531
ランタイムと付いてくるapiで肥大化するのが問題なんだよね。
536デフォルトの名無しさん
2020/05/14(木) 04:55:54.76ID:hWqHBFy5 cargo clippyが通ってcargo buildが失敗するケースってある?
537デフォルトの名無しさん
2020/05/14(木) 09:41:17.62ID:WpNijTVY 望まぬ非同期は一応 tokio::runtime::current_thread::block_on_all() で回避できるか
それでもビルドが一気に遅くなる
それでもビルドが一気に遅くなる
538デフォルトの名無しさん
2020/05/14(木) 15:47:47.58ID:yNXnSs4i >>536
リンクでエラーになる場合とかはある
リンクでエラーになる場合とかはある
539デフォルトの名無しさん
2020/05/14(木) 18:17:46.89ID:nGNfHuw+ なるほど
540デフォルトの名無しさん
2020/05/14(木) 21:36:47.59ID:AoVs9mpY 日本のRust界隈で有用なRust関連のツイートしてる人教えて
541デフォルトの名無しさん
2020/05/14(木) 23:31:33.96ID:W3KxELdZ おれおれ
542デフォルトの名無しさん
2020/05/15(金) 09:40:19.45ID:OlE2WbGd 鷺
543デフォルトの名無しさん
2020/05/16(土) 07:49:09.76ID:4fgNGNa5 io-uringと今までの非同期処理の違いってなに?
パフォーマンスそれほど変わるもんなの
パフォーマンスそれほど変わるもんなの
544デフォルトの名無しさん
2020/05/16(土) 22:12:40.61ID:d7M+qUqk スレチ
545デフォルトの名無しさん
2020/05/18(月) 04:57:51.24ID:z6Kgscbk 返り値に &'static str ってライフタイム指定ないといけないけど、推論だけで解決できない問題があるから書かないといけないの?
Stringからderefで生成した&strでも結局はIO以外で来たStringは'staticでしょ?推論できそうだけど
Stringからderefで生成した&strでも結局はIO以外で来たStringは'staticでしょ?推論できそうだけど
546デフォルトの名無しさん
2020/05/18(月) 23:19:03.18ID:Uv/lNmsL >>540
てらモス
てらモス
547デフォルトの名無しさん
2020/05/19(火) 03:57:06.17ID:GltHdsbb IO以外で来たString、つまりコンパイル時に計算しろってことやな!
let mut string = String::from("abcde");
if long_long_time_consume() != 0 { string.insert(0, 'c') }
require_static_str(&string); // require_static_str : &'static str -> ()
というコードが正しいかどうか、実際に長い長ーい計算しないと分からないけどできるならやれってことやな!絶対使わんわ!
let mut string = String::from("abcde");
if long_long_time_consume() != 0 { string.insert(0, 'c') }
require_static_str(&string); // require_static_str : &'static str -> ()
というコードが正しいかどうか、実際に長い長ーい計算しないと分からないけどできるならやれってことやな!絶対使わんわ!
548デフォルトの名無しさん
2020/05/21(木) 00:27:51.21ID:uKmbRWt0 paizaにRustの問題ないのつら
549デフォルトの名無しさん
2020/05/21(木) 13:46:29.84ID:e7acrJyd 競技プログラミングだとアルゴリズムの理解はともかく言語機能の活用は必ずしも身につかないしなぁ……。
Rust のようなプログラミング言語はいかにして抽象化層を構築するか、
いかにしてミスを防ぐか、
そのために必要なのはどんな機能かに意識が割かれたデザインが多いので、
手早くやることが正義の競技プログラミングではマッチしない。
ステップアップには良いかもしれんが、初心者向けには各言語向けの課題が欲しいよね。
Rust のようなプログラミング言語はいかにして抽象化層を構築するか、
いかにしてミスを防ぐか、
そのために必要なのはどんな機能かに意識が割かれたデザインが多いので、
手早くやることが正義の競技プログラミングではマッチしない。
ステップアップには良いかもしれんが、初心者向けには各言語向けの課題が欲しいよね。
550デフォルトの名無しさん
2020/05/21(木) 19:20:37.36ID:y/uWQkFk enum MyEnum {
Foo,
Bar,
Baz,
}
のようなデータを載せないシンプルなenumで
Clone/CopyやPartialEq/Eqなどを実装しない場合ってどんな意図があったりするの?
Foo,
Bar,
Baz,
}
のようなデータを載せないシンプルなenumで
Clone/CopyやPartialEq/Eqなどを実装しない場合ってどんな意図があったりするの?
551デフォルトの名無しさん
2020/05/21(木) 19:32:35.91ID:BBt3dInh 意図もクソも本来の普通のenumだろ
値そのものに特に意味がなくて、複数のオプションを区別するためだけに使う単なる定数
値そのものに特に意味がなくて、複数のオプションを区別するためだけに使う単なる定数
552デフォルトの名無しさん
2020/05/21(木) 19:52:52.75ID:Ge5vC94Q ただのサボりだろ、省略することに意図なんて無い
553デフォルトの名無しさん
2020/05/22(金) 00:12:42.63ID:Aykyb680 Rc<Hoge>のHogeの参照を取りたいとき &*rc_hoge とするのと rc_hoge.as_ref() とするのとどっちがおすすめ?
554デフォルトの名無しさん
2020/05/22(金) 01:00:57.91ID:dJNhuRdN >>551
同意
同意
555デフォルトの名無しさん
2020/05/22(金) 09:19:49.56ID:JweU/zGV556デフォルトの名無しさん
2020/05/22(金) 20:50:02.94ID:ZwFuqcZd557デフォルトの名無しさん
2020/05/22(金) 21:08:41.77ID:4ZqbW+TE non_exhaustive で pub な enum は勝手に Copy になると意図せぬ破壊的変更を起こしやすくなってしまう
558デフォルトの名無しさん
2020/05/22(金) 21:09:50.79ID:4ZqbW+TE >>553
Hoge が AsRef 実装してるかもしれないから Rc::as_ref か &*
Hoge が AsRef 実装してるかもしれないから Rc::as_ref か &*
559デフォルトの名無しさん
2020/05/22(金) 21:16:35.95ID:/JyTX0fw 最近ずっと弄ってるけどRust難しいのう・・・
560デフォルトの名無しさん
2020/05/23(土) 09:31:16.71ID:Zkam+XNX C++がそうだからとかの理由はなしで
[[[i32; 3]; 3]; 3]
がなんで
[3; [3; [3; i32]]]
じゃないの?
行列の時かなり読みにくいしさ
[[[i32; 3]; 3]; 3]
がなんで
[3; [3; [3; i32]]]
じゃないの?
行列の時かなり読みにくいしさ
561デフォルトの名無しさん
2020/05/23(土) 12:43:47.04ID:Ax4YhvgI なしでと言うかC++erが記法にノイズを持ち込んでるのは明らかなんだが
562デフォルトの名無しさん
2020/05/23(土) 15:44:24.84ID:jzsRlJtI >>560
それって型としては [[[i32]]] なんでしょ?
大きさの情報は後付けというか、
補足的なニュアンスを感じるので後にくるのが自然だと受け入れてる。
実際のところはどういう議論があったのか知らんけど。
それって型としては [[[i32]]] なんでしょ?
大きさの情報は後付けというか、
補足的なニュアンスを感じるので後にくるのが自然だと受け入れてる。
実際のところはどういう議論があったのか知らんけど。
563デフォルトの名無しさん
2020/05/23(土) 19:37:35.36ID:Zkam+XNX564デフォルトの名無しさん
2020/05/23(土) 22:35:14.94ID:xQEe6NOh let x = Box::new(String::from("foo"));
let y = *x;
これyにmoveできるの入門ドキュメントで説明されてなかったから結構驚いた
let y = *x;
これyにmoveできるの入門ドキュメントで説明されてなかったから結構驚いた
565デフォルトの名無しさん
2020/05/23(土) 23:03:55.77ID:6goyk3s3566デフォルトの名無しさん
2020/05/24(日) 01:52:15.18ID:tkUtJ987567562
2020/05/24(日) 09:30:45.62ID:SCWt5xFf568デフォルトの名無しさん
2020/05/24(日) 17:28:53.26ID:tkUtJ987 >>567
そういうこと
もっと言うと [T] の要素数情報は配列自体ではなく配列への参照 (fat pointer) が保持してるから
[T] が単独で存在することはできなくて、
参照経由の &[T] やスマートポインタ経由の Box<[T]>, Rc<[T]> といった形でしか存在できない
そういうこと
もっと言うと [T] の要素数情報は配列自体ではなく配列への参照 (fat pointer) が保持してるから
[T] が単独で存在することはできなくて、
参照経由の &[T] やスマートポインタ経由の Box<[T]>, Rc<[T]> といった形でしか存在できない
569562
2020/05/24(日) 17:59:17.80ID:SCWt5xFf >>568
そういうことか。
fat pointer を基礎に据えることを除けば
C/C++ のルールとかなり似てるのでわかりやすいな。
(けどそれ故に C/C++ 的な考え方に引きずられてしまう部分もある……。)
そういうことか。
fat pointer を基礎に据えることを除けば
C/C++ のルールとかなり似てるのでわかりやすいな。
(けどそれ故に C/C++ 的な考え方に引きずられてしまう部分もある……。)
570デフォルトの名無しさん
2020/05/24(日) 20:09:44.60ID:sglBbUqv 言いたい事は理解できるが
存在できないって言い方は少し引っかかる
存在できないって言い方は少し引っかかる
571デフォルトの名無しさん
2020/05/24(日) 23:17:03.73ID:WFZqWDFu 6月号で特集が組まれてます
初心者の方は是非
初心者の方は是非
572デフォルトの名無しさん
2020/05/24(日) 23:36:35.12ID:a0LhMB8x なにこれどうなってるの?traitでFizzBuzz?
https://github.com/doctorn/trait-eval
https://github.com/doctorn/trait-eval
573デフォルトの名無しさん
2020/05/25(月) 09:27:38.21ID:Jp/r3UJz traitのFizzbuzzに付属してるtrait群がいいね。From実装してなくて爪甘いけど
574デフォルトの名無しさん
2020/05/25(月) 22:39:28.81ID:MNSExfZQ >>566
>[[[i32; 3]; 3]] は存在できるが
unsizedだからできない。
というか存在はしてる。rustはリージョンでメモリ管理するからコンパイル時に
リージョンのサイズが分かる必要があるからDSTが第一級じゃないだけ。
スライスにすればそのスライスのサイズはusize*2だからzoneを確保できるだろ。
コンパイル時にポインタのサイズが分かれば良いだけだから
assert_eq!(::std::alloc::Layout::new::<*const [u64]>(), ::std::alloc::Layout::new::<&[u64]>());
は通る。the bookとnomiconよめ。
>[[[i32; 3]; 3]] は存在できるが
unsizedだからできない。
というか存在はしてる。rustはリージョンでメモリ管理するからコンパイル時に
リージョンのサイズが分かる必要があるからDSTが第一級じゃないだけ。
スライスにすればそのスライスのサイズはusize*2だからzoneを確保できるだろ。
コンパイル時にポインタのサイズが分かれば良いだけだから
assert_eq!(::std::alloc::Layout::new::<*const [u64]>(), ::std::alloc::Layout::new::<&[u64]>());
は通る。the bookとnomiconよめ。
575デフォルトの名無しさん
2020/05/26(火) 01:25:10.52ID:zMnW+xpW576デフォルトの名無しさん
2020/05/26(火) 09:22:21.48ID:yWo2qZ2t577デフォルトの名無しさん
2020/05/26(火) 12:44:21.66ID:tQI2iyhC ::stdの指定の仕方ってなんで使うの?stdじゃなくて
自作のmod std作った時にしか被らないぐらいしか利点なさそう。しかもそんな紛らわしい名前で作らないし
自作のmod std作った時にしか被らないぐらいしか利点なさそう。しかもそんな紛らわしい名前で作らないし
578デフォルトの名無しさん
2020/05/26(火) 23:26:23.63ID:yWo2qZ2t 他の crate に公開するマクロで使う
579デフォルトの名無しさん
2020/05/26(火) 23:27:54.23ID:yWo2qZ2t std以外のcrateにも使えるから、モジュールとの名前かぶりで使わざるを得ないときもある
testとか
testとか
580デフォルトの名無しさん
2020/05/27(水) 10:28:00.44ID:dVIhbWpz 2018の次期バージョンっていくつ?
581デフォルトの名無しさん
2020/05/27(水) 11:01:45.48ID:pv32Gf/H >>580
Prepare for a possible Rust 2021 Edition
https://github.com/rust-lang/rfcs/blob/master/text/2857-roadmap-2020.md
Prepare for a possible Rust 2021 Edition
https://github.com/rust-lang/rfcs/blob/master/text/2857-roadmap-2020.md
582デフォルトの名無しさん
2020/05/28(木) 08:05:27.45ID:NpbhHX3L pub enum KansaiPref {
Osaka,
Hyogo,
Kyoto,
}
こういうenumを文字列から生成する時ってnewよりfrom_strで作った方がいいの?
impl KansaiPref {
fn new(s: &str) -> Self {
use Self::*;
match s {
"大阪" => Osaka,
"兵庫" => Hyogo,
"京都" => Kyoto,
_ => unimplemented!(),
}
}
newかfrom_str
impl FromStr for KansaiPref {
type Err = ...;
fn from_str(s: &str) -> Result<Self, Self::Err> {
use Self::*;
match s {
"大阪" => Osaka,
"兵庫" => Hyogo,
"京都" => Kyoto,
_ => unimplemented!(),
}
}
}
Osaka,
Hyogo,
Kyoto,
}
こういうenumを文字列から生成する時ってnewよりfrom_strで作った方がいいの?
impl KansaiPref {
fn new(s: &str) -> Self {
use Self::*;
match s {
"大阪" => Osaka,
"兵庫" => Hyogo,
"京都" => Kyoto,
_ => unimplemented!(),
}
}
newかfrom_str
impl FromStr for KansaiPref {
type Err = ...;
fn from_str(s: &str) -> Result<Self, Self::Err> {
use Self::*;
match s {
"大阪" => Osaka,
"兵庫" => Hyogo,
"京都" => Kyoto,
_ => unimplemented!(),
}
}
}
583デフォルトの名無しさん
2020/05/28(木) 10:15:20.06ID:Xow4Xb3r >>582
どっちでもいいと思うけど自分ならfrom_str選ぶ
理由はenumをnewするのにResult(かOption)が返されるシグニチャよりも
input.parse::<KansaiPref>()してResultが返されるほうが意図が伝わりやすいから
どっちでもいいと思うけど自分ならfrom_str選ぶ
理由はenumをnewするのにResult(かOption)が返されるシグニチャよりも
input.parse::<KansaiPref>()してResultが返されるほうが意図が伝わりやすいから
584デフォルトの名無しさん
2020/05/28(木) 12:26:13.92ID:XHarSIwj >>582
俺は初心者だから意見としてはそれほどあてにならないけど、
from_str を使った方がいいと思う。
new はただの習慣だが FromStr は制約として機能するので、
既存の枠組みの中で便利に機能する可能性がある。
俺は初心者だから意見としてはそれほどあてにならないけど、
from_str を使った方がいいと思う。
new はただの習慣だが FromStr は制約として機能するので、
既存の枠組みの中で便利に機能する可能性がある。
585デフォルトの名無しさん
2020/05/28(木) 22:03:56.44ID:85z31x28 多言語展開を考えるとどれも使いたくねえな…と思ってしまう
586デフォルトの名無しさん
2020/05/29(金) 07:36:25.48ID:RYu+vFRR FromStr実装するならちゃんと Err 返してくれ
587デフォルトの名無しさん
2020/05/29(金) 16:33:26.54ID:nAKVwuCz let a : Box<[T; 1000]> = Box::new([Default::default();1000]);
みたいなのってスタックに要素を作ってからヒープにコピーするようになるから効率が悪いし、
Copy を実装してない型だと使えないみたいなんだけど、これって今はどうするのが常套手段なの?
前提条件として変数の型は Box<[T; 1000]> というのは固定ということにして、
unsafe も避けられるものなら避けたい。
みたいなのってスタックに要素を作ってからヒープにコピーするようになるから効率が悪いし、
Copy を実装してない型だと使えないみたいなんだけど、これって今はどうするのが常套手段なの?
前提条件として変数の型は Box<[T; 1000]> というのは固定ということにして、
unsafe も避けられるものなら避けたい。
588デフォルトの名無しさん
2020/05/29(金) 17:24:59.34ID:lyhnjVvq >>587
vec![Default::default();1000].into_boxed_slice();
vec![Default::default();1000].into_boxed_slice();
589デフォルトの名無しさん
2020/05/29(金) 21:21:26.13ID:tZarZhzR >>586
標準でString or &str のパース失敗時に返すErrの型とかあんの?
標準でString or &str のパース失敗時に返すErrの型とかあんの?
590デフォルトの名無しさん
2020/05/30(土) 00:58:42.40ID:wj/8yI7A vec! と同じような使い勝手の box! があってもよさそうな気がするけど、
そういうクレートがあったりする?
そういうクレートがあったりする?
591デフォルトの名無しさん
2020/05/30(土) 01:42:01.99ID:tvhETOJ1 #![feature(box_syntax)]
let a: Box<[T; 1000]> = box [Default::default(); 1000];
https://github.com/rust-lang/rust/issues/53827
let a: Box<[T; 1000]> = box [Default::default(); 1000];
https://github.com/rust-lang/rust/issues/53827
592デフォルトの名無しさん
2020/05/30(土) 01:46:59.27ID:wj/8yI7A >>591
おおっ、これぞ私が必要としていたもの!
おおっ、これぞ私が必要としていたもの!
593デフォルトの名無しさん
2020/05/30(土) 07:24:57.35ID:DJ1cbMGZ594デフォルトの名無しさん
2020/05/30(土) 11:52:22.59ID:wj/8yI7A # と #! はどういう使い分けがあるの?
595デフォルトの名無しさん
2020/05/30(土) 13:01:17.39ID:QgJ1kT2w596デフォルトの名無しさん
2020/05/30(土) 15:53:27.03ID:wj/8yI7A >>595
Thx
Thx
597デフォルトの名無しさん
2020/06/01(月) 10:13:32.80ID:QCREwpDy loopとスレッドスリープでやるのもいいけど、いい感じにデーモン立てて一定時間経ったら関数実行してくれるような仕組みのクレートってない?
598デフォルトの名無しさん
2020/06/01(月) 10:31:33.62ID:o7IiynR8 借用や所有の概念って、Rustがはじめてなのかと思ったら、D言語に既にあったんだね。
599デフォルトの名無しさん
2020/06/01(月) 10:51:02.85ID:o7IiynR8 >>598
あー。D言語の方がRustを参考に取り入れたらしい。
あー。D言語の方がRustを参考に取り入れたらしい。
600デフォルトの名無しさん
2020/06/01(月) 11:12:31.20ID:o7IiynR8 Rustのヒープは必ず参照カウンタが入ってしまうので、C/C++言語に比べれば遅くなるね。
601デフォルトの名無しさん
2020/06/01(月) 11:19:51.79ID:dfhSq8hG602デフォルトの名無しさん
2020/06/01(月) 11:31:20.41ID:o7IiynR8 >>601
Box<T>も参照カウンタ入ってないの?
Box<T>も参照カウンタ入ってないの?
603デフォルトの名無しさん
2020/06/01(月) 11:32:01.43ID:o7IiynR8 >>601
それより、参照カウンタが入っているかどうかはどこを読めば分かるの?
それより、参照カウンタが入っているかどうかはどこを読めば分かるの?
604デフォルトの名無しさん
2020/06/01(月) 11:35:58.71ID:o7IiynR8 C++ vs Rust
unique_ptr<T> ---> Box<T>
shared_ptr<T> ---> Rc<T>
weak_ptr<T> ---> Weak<T>
ということなの?
どこに書いてある??
unique_ptr<T> ---> Box<T>
shared_ptr<T> ---> Rc<T>
weak_ptr<T> ---> Weak<T>
ということなの?
どこに書いてある??
605デフォルトの名無しさん
2020/06/01(月) 11:37:31.71ID:dfhSq8hG606デフォルトの名無しさん
2020/06/01(月) 11:40:30.85ID:o7IiynR8 let a = 7;
let a_box: Box<i32>
a_box = Box::new(a+2); //(3)
という例があったけど、どうして、(3)がエラーにならないの?
mut 属性にしておかなければ、let文でしか代入できないんじゃなかった?
let a_box: Box<i32>
a_box = Box::new(a+2); //(3)
という例があったけど、どうして、(3)がエラーにならないの?
mut 属性にしておかなければ、let文でしか代入できないんじゃなかった?
607デフォルトの名無しさん
2020/06/01(月) 11:43:34.61ID:dfhSq8hG >>604
https://doc.rust-jp.rs/book/second-edition/ch15-00-smart-pointers.html
>>606
a_boxは2行目では値が入ってないので、3行目が最初の代入だから変更ではなくmutはいらない。
https://doc.rust-jp.rs/book/second-edition/ch15-00-smart-pointers.html
>>606
a_boxは2行目では値が入ってないので、3行目が最初の代入だから変更ではなくmutはいらない。
608デフォルトの名無しさん
2020/06/01(月) 11:44:44.94ID:o7IiynR8609デフォルトの名無しさん
2020/06/01(月) 11:49:39.54ID:o7IiynR8 >>607
>a_boxは2行目では値が入ってないので、3行目が最初の代入だから変更ではなくmutはいらない。
なるほど、最初かどうかをコンパイラが追跡していたんだね。
知らなかった。
immutableな変数は、必ず let 文でしか代入できないとばかり思っていた。
最初に読んだ documentでは、例としてそう書いてあったから。
>a_boxは2行目では値が入ってないので、3行目が最初の代入だから変更ではなくmutはいらない。
なるほど、最初かどうかをコンパイラが追跡していたんだね。
知らなかった。
immutableな変数は、必ず let 文でしか代入できないとばかり思っていた。
最初に読んだ documentでは、例としてそう書いてあったから。
610デフォルトの名無しさん
2020/06/01(月) 11:51:23.94ID:dfhSq8hG >>608
厳密に同じかはわからないけど、対応としては合ってるかと。
厳密に同じかはわからないけど、対応としては合ってるかと。
611デフォルトの名無しさん
2020/06/01(月) 12:19:02.82ID:o7IiynR8 「変数のアドレスを他の変数に代入することを借用(borrowing)という」
という理解で有ってる?
という理解で有ってる?
612デフォルトの名無しさん
2020/06/01(月) 12:37:12.92ID:QCREwpDy ID: o7IiynR8
こいつやべーだろ。なんにも知らないくせにRustのヒープは必ず参照カウンタが入るとか嘘吹かしてんじゃねえか
蓋開けれみりゃ初心者のクレクレゴミだし、どういう自信で最初言ったんだよ
こいつやべーだろ。なんにも知らないくせにRustのヒープは必ず参照カウンタが入るとか嘘吹かしてんじゃねえか
蓋開けれみりゃ初心者のクレクレゴミだし、どういう自信で最初言ったんだよ
613デフォルトの名無しさん
2020/06/01(月) 12:37:39.24ID:0yVOdbpz >>611
実態はアドレスだが所有権管理の対象になるのはアドレスではなく参照。
実態はアドレスだが所有権管理の対象になるのはアドレスではなく参照。
614デフォルトの名無しさん
2020/06/01(月) 13:18:58.22ID:0yVOdbpz コンパイル時に所有権のチェックをしてるってのがよくわかってなくて変なことを言ってるのかもね。
「所有権の移動」が「実行時にアドレスと一緒に所有権が渡される」みたいな認識だとしたら
参照カウンタによって実装されるという ID:o7IiynR8 みたいな言説になるのはわからんでもない。
が、 Rust は静的解析の賢さでメモリの安全性を高めるのがウリのひとつなんだからそんなわけねーだろというくらいには
想像できて欲しいよ。
「所有権の移動」が「実行時にアドレスと一緒に所有権が渡される」みたいな認識だとしたら
参照カウンタによって実装されるという ID:o7IiynR8 みたいな言説になるのはわからんでもない。
が、 Rust は静的解析の賢さでメモリの安全性を高めるのがウリのひとつなんだからそんなわけねーだろというくらいには
想像できて欲しいよ。
615デフォルトの名無しさん
2020/06/01(月) 13:24:10.03ID:aguQ4xiv C++の概念に言い換えて理解しようというのが
そもそも無理筋な気が
そもそも無理筋な気が
616デフォルトの名無しさん
2020/06/01(月) 13:41:16.41ID:51GFkTZC 説明書読まずにとりあえず人に聞いて教えて貰おうとするやついるよね
617デフォルトの名無しさん
2020/06/01(月) 14:10:26.06ID:0yVOdbpz 所有権回りは Rust の重要な特徴だから
どんな入門書でも書いてないはずはないんだよな。
どんな入門書でも書いてないはずはないんだよな。
618デフォルトの名無しさん
2020/06/01(月) 14:47:28.60ID:w1nG+7Ec Rustの普及を阻む課題 年次調査から明らかに
https://www.atmarkit.co.jp/ait/articles/2006/01/news044.html
Rustの利用をやめた回答者にその理由を尋ねたところ「自社がRustを使っていない」という回答が最も多かった。
他の上位の理由は「習得が大変」「必要としているライブラリがない」「移行すると作業能率が落ちる」「IDE(統合開発環境)でのサポートが不十分」などだ。
Rustを利用したことがない回答者に理由を尋ねたところ、「Rustを学んだことがないから。ただし、学びたい」「自社がRustを使っていないから」という回答が、いずれも約4分の1の割合に達し、この2つで回答の過半数を占めた。
Rustの普及拡大への最大の課題として挙げた上位3つは、「トレーニング/ドキュメントの充実」「ライブラリの充実/改善」「IDEの統合」だ。
https://www.atmarkit.co.jp/ait/articles/2006/01/news044.html
Rustの利用をやめた回答者にその理由を尋ねたところ「自社がRustを使っていない」という回答が最も多かった。
他の上位の理由は「習得が大変」「必要としているライブラリがない」「移行すると作業能率が落ちる」「IDE(統合開発環境)でのサポートが不十分」などだ。
Rustを利用したことがない回答者に理由を尋ねたところ、「Rustを学んだことがないから。ただし、学びたい」「自社がRustを使っていないから」という回答が、いずれも約4分の1の割合に達し、この2つで回答の過半数を占めた。
Rustの普及拡大への最大の課題として挙げた上位3つは、「トレーニング/ドキュメントの充実」「ライブラリの充実/改善」「IDEの統合」だ。
619デフォルトの名無しさん
2020/06/01(月) 15:24:58.77ID:lLamlcG6620デフォルトの名無しさん
2020/06/01(月) 15:45:21.43ID:o7IiynR8 ちょっと変わった傾向だな:
55% of Rust users develop on Linux
24% develop on Windows
23% develop on macOS
55% of Rust users develop on Linux
24% develop on Windows
23% develop on macOS
621デフォルトの名無しさん
2020/06/01(月) 15:59:56.59ID:QCREwpDy 間違った知識を他人に教えるのは説明書読む以前の問題
622デフォルトの名無しさん
2020/06/01(月) 16:00:16.74ID:o7IiynR8 回答者がターゲットとしているプラットフォームも以下の様に書かれているが、回答者がWebBackendを職業にしている人が多いことに対応している可能性が高い :
Linux: 36.9%、
Windows: 16.3%、
maxOS: 14.7%
WebAssembly: 14.4%
Embedded: 7.6%
iOS: 2.9%
BSD: 2.7%
Android: 2.4%
When it comes to what platforms using are targeting for their applications Linux remains the first choice with 36.9%,with Windows as second at 16.3%.
Following close behind Windows are macOS and Web Assembly at 14% each
Linux: 36.9%、
Windows: 16.3%、
maxOS: 14.7%
WebAssembly: 14.4%
Embedded: 7.6%
iOS: 2.9%
BSD: 2.7%
Android: 2.4%
When it comes to what platforms using are targeting for their applications Linux remains the first choice with 36.9%,with Windows as second at 16.3%.
Following close behind Windows are macOS and Web Assembly at 14% each
623デフォルトの名無しさん
2020/06/01(月) 17:53:49.92ID:o7IiynR8 Some a = xxx; // 何か初期済みであると仮定
let b1 = Box::new(a);
let b2 = b1;
とした場合、b1が持っていた所有権はb2に移ってしまい、
b1はこれ以後使えなくなるという理解で有ってますか?
let b1 = Box::new(a);
let b2 = b1;
とした場合、b1が持っていた所有権はb2に移ってしまい、
b1はこれ以後使えなくなるという理解で有ってますか?
624デフォルトの名無しさん
2020/06/01(月) 18:03:59.31ID:o7IiynR8 初心者なもので、正しく(?)は、
let b1 = Box<Some>::new();
let b2 = b1;
なのかも知れません。
let b1 = Box<Some>::new();
let b2 = b1;
なのかも知れません。
625デフォルトの名無しさん
2020/06/01(月) 18:07:45.72ID:lLamlcG6 >>623
とりあえずThe Bookの所有権のところを一通り読んでから質問してください
その質問の答えも試し方も全部書いてますので
https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html
とりあえずThe Bookの所有権のところを一通り読んでから質問してください
その質問の答えも試し方も全部書いてますので
https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★2 [ぐれ★]
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★7 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… [BFU★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 「高市人気」どこに? 自民候補が福島市長選で大敗、葛飾区議選でも苦戦 衆院早期解散論に冷や水 [1ゲットロボ★]
- 【ホタテ】中国が水産物輸入停止を伝達「ビクビクしながら…」北海道の水産業者からは落胆の声 [おっさん友の会★]
- 中国「水産物輸入停止は高市首相の発言が理由」 [256556981]
- 日本人、ついに気づく「あれ、日本が対中国で取れる対抗措置ってなくない…?」 [931948549]
- 【号外】中国外務省、高市首相が台湾関連の発言を撤回しなければ「断固たる対抗措置」を取らざるを得ないと述べた [115996789]
- 中国「次に禁止してほしいものを教えて」 [358382861]
- 【画像】外務省局長のあの写真、日本側に無許可で撮影されたものだったwwwwwwwww [834922174]
- 【速報】中国、水産物輸入停止★3 [989870298]
