Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。
http://www.rust-lang.org/
https://github.com/rust-lang/rust
Servo
https://servo.org/
https://github.com/servo/servo
◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960
プログラミング言語 Rust 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/05/21(日) 14:04:29.55ID:9L9dm7b/574デフォルトの名無しさん
2017/08/16(水) 18:47:37.19ID:U6ziTncO やっぱそーなっちゃうんですねー。
ありがとうございました。
さすがにこれ以上エレガントなのはないですね
ありがとうございました。
さすがにこれ以上エレガントなのはないですね
575デフォルトの名無しさん
2017/08/16(水) 18:48:57.93ID:Vj5dC5z1 元から&mut Stringや&mut OsStringを持っていてそれを&Pathに変換するような場面なら、素直にStringやOsStringの時点でpushとかで加工した方が手軽だと思う
OwnedなPathBufしか持っていないのなら一旦OsStringに変換してから拡張子を足してPathBufに戻す
&Pathや&strしか持っていないのなら、そもそもその状態では書き換えようがないからto_ownedする
&mut PathBufしか持っていないのなら、多分設計が良くない。&mut OsStringを受け取れるようにできないか検討しよう
OwnedなPathBufしか持っていないのなら一旦OsStringに変換してから拡張子を足してPathBufに戻す
&Pathや&strしか持っていないのなら、そもそもその状態では書き換えようがないからto_ownedする
&mut PathBufしか持っていないのなら、多分設計が良くない。&mut OsStringを受け取れるようにできないか検討しよう
576デフォルトの名無しさん
2017/08/16(水) 19:03:14.68ID:PvRs7uXf エディタわりとバラバラなのな
俺はVimだけど何となく気になった
俺はVimだけど何となく気になった
577デフォルトの名無しさん
2017/08/16(水) 19:22:40.51ID:ObQbU6V8578デフォルトの名無しさん
2017/08/16(水) 19:42:34.81ID:Vj5dC5z1 >>577
1番目
fn f(path: &mut OsString) -> &Path {
path.push(".zip");
Path::new(path)
}
let mut path = "f.txt".into();
assert_eq!(Some("f.txt.zip"), f(&mut path).to_str());
2番目(assertionは省略)
fn g(path: PathBuf) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}
3番目
fn h(path: &Path) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}
ついでに4番目(実際に使うべきでないが)
fn i(path: &mut PathBuf) {
unsafe {
(*(path as *mut _ as *mut OsString)).push(".zip")
};
}
1番目
fn f(path: &mut OsString) -> &Path {
path.push(".zip");
Path::new(path)
}
let mut path = "f.txt".into();
assert_eq!(Some("f.txt.zip"), f(&mut path).to_str());
2番目(assertionは省略)
fn g(path: PathBuf) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}
3番目
fn h(path: &Path) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}
ついでに4番目(実際に使うべきでないが)
fn i(path: &mut PathBuf) {
unsafe {
(*(path as *mut _ as *mut OsString)).push(".zip")
};
}
579デフォルトの名無しさん
2017/08/16(水) 19:56:17.83ID:YfsrWVwz めちゃくちゃエレガントになったな(白目)
580デフォルトの名無しさん
2017/08/16(水) 20:11:43.78ID:ObQbU6V8 1〜3がすごく無駄なバリエーションでワロタ
まとめてこれでいいじゃん, 分けて挙げた意味あるのかいな
let path = f(PathBuf::from("f.txt"));
let path = f(Path::new("f.txt"));
let path = f(OsString::from("f.txt"));
fn f<P: AsRef<Path>>(path: P) -> PathBuf {
let mut path: OsString = path.as_ref().into();
path.push(".zip");
path.into()
}
まとめてこれでいいじゃん, 分けて挙げた意味あるのかいな
let path = f(PathBuf::from("f.txt"));
let path = f(Path::new("f.txt"));
let path = f(OsString::from("f.txt"));
fn f<P: AsRef<Path>>(path: P) -> PathBuf {
let mut path: OsString = path.as_ref().into();
path.push(".zip");
path.into()
}
581デフォルトの名無しさん
2017/08/16(水) 20:16:19.25ID:eiUsQzcr cloneする奴としない奴を同列に語るのはどうなんだって感じだがな
582デフォルトの名無しさん
2017/08/16(水) 20:18:00.24ID:ObQbU6V8 4を頑張れば>>573を超える雑な実装にできる可能性がありそうだけど無理かなぁ
まぁ無理か・・・
まぁ無理か・・・
583デフォルトの名無しさん
2017/08/16(水) 20:27:22.87ID:eiUsQzcr つまり、雑さ選手権であると言う事を見落とした事が>>575の敗因か()
584デフォルトの名無しさん
2017/08/16(水) 20:36:20.89ID:8AGyDDIv PathBuf::pushじゃいかんのか
let buf = path.to_parh_buf();
buf.push(".zip");
buf.as_ref()
一番良いのはPathの元になったOwnedな型にpushすることだと思うが
let buf = path.to_parh_buf();
buf.push(".zip");
buf.as_ref()
一番良いのはPathの元になったOwnedな型にpushすることだと思うが
585デフォルトの名無しさん
2017/08/16(水) 20:36:47.76ID:8AGyDDIv let mut にするの忘れた
586デフォルトの名無しさん
2017/08/16(水) 20:38:34.55ID:Vj5dC5z1 let mut buf: PathBuf = "f.txt".into();
buf.push(".zip");
println!("{:?}", buf); // => "f.txt/.zip"
buf.push(".zip");
println!("{:?}", buf); // => "f.txt/.zip"
587デフォルトの名無しさん
2017/08/16(水) 20:38:39.16ID:ObQbU6V8 >>581
関数f内でのPath/PathBufのメモリ確保処理に差はないから必要なら後からas_pathでもしたらいいんじゃね
むしろas_refやintoのオーバーヘッドを気にすべきかのう, 100万回くらいループしたら1秒くらいの差が出るかも?
関数f内でのPath/PathBufのメモリ確保処理に差はないから必要なら後からas_pathでもしたらいいんじゃね
むしろas_refやintoのオーバーヘッドを気にすべきかのう, 100万回くらいループしたら1秒くらいの差が出るかも?
588デフォルトの名無しさん
2017/08/16(水) 20:39:36.49ID:8AGyDDIv 失礼、PathBuf.pushだと/がついてしまうのか
589デフォルトの名無しさん
2017/08/16(水) 20:44:06.60ID:kNGkTZBw だれも>>550に肝心なこと言ってやらないのな。
>>550
関数が&Path返すだけじゃE0597はでねぇのよ。たとえば>>534のは
>fn path<'a>(name: &str, ext: &str) -> &'a Path {
>Path::new(&format!("{}.{}", name, ext))
>}
&format!("{}.{}", name, ext)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
この中でnameとextをdropするからE0597出るんだよ。
まあ、罠だけど。ただの面倒くさいっていう見本みたいだし。
借用を関数の中で結合して返すってのが潜在的に危険だから
やり様は色々あるけど↓が一番簡単。
ttps://play.rust-lang.org/?gist=e4937a92f292952a620eaa7bffa51c21&version=stable
>>563
無理、rustはこういう型シノニムを構造体でラップしたfat pointerとして定義するからtransmuteは必要になる。
こういうnewtypeがやりたいのはunsafe消すこと。
名前からtransmuteしてるようには見えないから名前が悪いのよ。
>>565
from/intoは使い方決まってる
>>550
関数が&Path返すだけじゃE0597はでねぇのよ。たとえば>>534のは
>fn path<'a>(name: &str, ext: &str) -> &'a Path {
>Path::new(&format!("{}.{}", name, ext))
>}
&format!("{}.{}", name, ext)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
この中でnameとextをdropするからE0597出るんだよ。
まあ、罠だけど。ただの面倒くさいっていう見本みたいだし。
借用を関数の中で結合して返すってのが潜在的に危険だから
やり様は色々あるけど↓が一番簡単。
ttps://play.rust-lang.org/?gist=e4937a92f292952a620eaa7bffa51c21&version=stable
>>563
無理、rustはこういう型シノニムを構造体でラップしたfat pointerとして定義するからtransmuteは必要になる。
こういうnewtypeがやりたいのはunsafe消すこと。
名前からtransmuteしてるようには見えないから名前が悪いのよ。
>>565
from/intoは使い方決まってる
590デフォルトの名無しさん
2017/08/16(水) 20:45:56.00ID:eiUsQzcr >>587
Path::newやas_ref、intoは単に型システム上の操作であってnoopなのでは(検証してない)
だってPathやらPathBufやらはOsStrやOsStringに対する単なるnewtypeでしょ
Path::newやas_ref、intoは単に型システム上の操作であってnoopなのでは(検証してない)
だってPathやらPathBufやらはOsStrやOsStringに対する単なるnewtypeでしょ
591デフォルトの名無しさん
2017/08/16(水) 20:54:34.33ID:8AGyDDIv let mut buf = PathBuf::from("hoge.txt");
let mut ext = buf.extension().map(OsString::from).unwap_or(OsString::new);
ext.push(".zip");
buf.set_extension(&ext);
let mut ext = buf.extension().map(OsString::from).unwap_or(OsString::new);
ext.push(".zip");
buf.set_extension(&ext);
592デフォルトの名無しさん
2017/08/16(水) 21:03:54.32ID:8AGyDDIv593デフォルトの名無しさん
2017/08/16(水) 21:07:58.66ID:ObQbU6V8 fn f<T: Trait>(t: T) のトレイトによる分岐はnoopだけど、as_ref, intoはnoopとは限らんよねぇ
impl AsRef, Intoの実装でゴチャゴチャ処理するモノもあるだろうし
Path, PathBufに限ってはinnerを返すだけっぽいからコンパイラによる最適化でnoopになるかな
2,3回前のリリースでもコンパイラ最適化を抜本見直ししてたし、どうなってるかワカラン(自分も検証する気ない)
impl AsRef, Intoの実装でゴチャゴチャ処理するモノもあるだろうし
Path, PathBufに限ってはinnerを返すだけっぽいからコンパイラによる最適化でnoopになるかな
2,3回前のリリースでもコンパイラ最適化を抜本見直ししてたし、どうなってるかワカラン(自分も検証する気ない)
594デフォルトの名無しさん
2017/08/16(水) 21:51:24.68ID:8AGyDDIv AsRefはcheapな型変換を実装するためのtraitだし、as_refは常にほぼnoopだと言って良いと思う
https://doc.rust-lang.org/std/convert/trait.AsRef.html
https://doc.rust-lang.org/std/convert/trait.AsRef.html
595デフォルトの名無しさん
2017/08/16(水) 22:57:30.93ID:Agtz0DvI 雑に拡張子生成部のワンライナーを目指した(改行がないとは言っていない
let new_ext = ".zip";
let mut buf = PathBuf::from("hoge.txt");
let ext = buf.extension()
.map(OsString::from).map(|mut ext| {ext.push(new_ext); ext})
.unwrap_or(new_ext.into());
buf.set_extension(&ext);
let new_ext = ".zip";
let mut buf = PathBuf::from("hoge.txt");
let ext = buf.extension()
.map(OsString::from).map(|mut ext| {ext.push(new_ext); ext})
.unwrap_or(new_ext.into());
buf.set_extension(&ext);
596デフォルトの名無しさん
2017/08/17(木) 18:40:58.78ID:8HfS9wXv std::path::Componentsのimpl AsRef<Path>みたいな地雷もいるけどな! > as_refがnoop
地雷を踏み抜かないように使いたい所存
地雷を踏み抜かないように使いたい所存
597デフォルトの名無しさん
2017/08/18(金) 18:00:28.47ID:XVXUXs+1 メンバ変数の参照を返すイテレータモドキ
https://play.rust-lang.org/?gist=42ce623d69717a8acdc7736d6d624f60
これに Iterator トレイトを実装させたいのだが、関連型 Item の定義が上手く行かず困っている。
関連型について
type Item = <&T>; とするとライフタイムが必要だと出る。
しかし
impl<'a, T> Iterator for Foo<T> {
type Item = Option<&'a T>;
...
とか
PhantomData 使ったりしてみた https://play.rust-lang.org/?gist=5b127531f2b93a1a9a9143de86ad2340
けど通らない。
どうすれば良いのだろう?
https://play.rust-lang.org/?gist=42ce623d69717a8acdc7736d6d624f60
これに Iterator トレイトを実装させたいのだが、関連型 Item の定義が上手く行かず困っている。
関連型について
type Item = <&T>; とするとライフタイムが必要だと出る。
しかし
impl<'a, T> Iterator for Foo<T> {
type Item = Option<&'a T>;
...
とか
PhantomData 使ったりしてみた https://play.rust-lang.org/?gist=5b127531f2b93a1a9a9143de86ad2340
けど通らない。
どうすれば良いのだろう?
598デフォルトの名無しさん
2017/08/18(金) 18:05:55.69ID:XVXUXs+1 ミス。
> type Item = Option
の Option<> は要りません。
> type Item = Option
の Option<> は要りません。
599デフォルトの名無しさん
2017/08/18(金) 18:07:34.29ID:LVQKp7rQ >>597
impl<'a, T> Iterator for &'a Fooじゃダメな理由とかある?
impl<'a, T> Iterator for &'a Fooじゃダメな理由とかある?
600デフォルトの名無しさん
2017/08/18(金) 18:17:10.82ID:XVXUXs+1 impl<'a,T> Iterator for &'a Foo<T> {
type Item = &'a T;
fn next(&mut self) -> Option<&T> {
Some(&self.x)
}
}
これはこれで error[E0495]: cannot infer an appropriate lifetime for lifetime parameter in generic type due to conflicting requirements
エラーが出ます。
type Item = &'a T;
fn next(&mut self) -> Option<&T> {
Some(&self.x)
}
}
これはこれで error[E0495]: cannot infer an appropriate lifetime for lifetime parameter in generic type due to conflicting requirements
エラーが出ます。
601デフォルトの名無しさん
2017/08/18(金) 18:20:10.90ID:LVQKp7rQ602デフォルトの名無しさん
2017/08/18(金) 18:35:09.68ID:XVXUXs+1 >>601
おお、出来ました! ありがとうございます。
a.next() ではなく (&a).next() となってしまうのが心残りです。
関連型 Item のライフタイム問題が無ければ素のコードで行けるのに、
何故こんなことになってしまうのか……
おお、出来ました! ありがとうございます。
a.next() ではなく (&a).next() となってしまうのが心残りです。
関連型 Item のライフタイム問題が無ければ素のコードで行けるのに、
何故こんなことになってしまうのか……
603デフォルトの名無しさん
2017/08/18(金) 19:24:37.05ID:LVQKp7rQ604デフォルトの名無しさん
2017/08/18(金) 19:31:38.24ID:zUkt3uOb ていうかあんまり本質的な問題ではないけどtakeを使うべき場面だな
605デフォルトの名無しさん
2017/08/18(金) 23:23:26.21ID:68PBtc02 Rustの2017年ロードマップの進捗状況
https://www.infoq.com/jp/news/2017/08/rust-2017-roadmap-six-months
https://www.infoq.com/jp/news/2017/08/rust-2017-roadmap-six-months
606デフォルトの名無しさん
2017/08/19(土) 00:07:19.34ID:gC1uMiLY >>592-594
変換系の命名規則はコストで決まってる。
ttps://rust-lang-nursery.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv
ただまだ質が悪いから準拠してこうぜ!ってのが2017のロードマップ。
変換系の命名規則はコストで決まってる。
ttps://rust-lang-nursery.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv
ただまだ質が悪いから準拠してこうぜ!ってのが2017のロードマップ。
607デフォルトの名無しさん
2017/08/19(土) 04:06:47.11ID:eOOMhS38 何で皆さんそんなにコピーがお嫌いなんですか
608デフォルトの名無しさん
2017/08/19(土) 08:31:32.98ID:BpKw1nHe Copyは良いがCloneは避けたい
Cloneどんどんやって良いようなプログラムならrustで書かなくても良い
Cloneどんどんやって良いようなプログラムならrustで書かなくても良い
609デフォルトの名無しさん
2017/08/19(土) 10:50:48.03ID:5Hm4My/o >>603
> Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある
Slice のコードを参考にしてみた結果、Some(&v) じゃなくて Some(&*ptr) という unsafe な手法ですが、こんな感じで上手く行きました。
https://play.rust-lang.org/?gist=639045def9c07026e8b6b0267a9dae98
ありがとうございました。
> Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある
Slice のコードを参考にしてみた結果、Some(&v) じゃなくて Some(&*ptr) という unsafe な手法ですが、こんな感じで上手く行きました。
https://play.rust-lang.org/?gist=639045def9c07026e8b6b0267a9dae98
ありがとうございました。
610デフォルトの名無しさん
2017/08/19(土) 10:56:56.32ID:i5Fk1Iv8 copyとcloneの違いって?
611デフォルトの名無しさん
2017/08/19(土) 14:19:36.24ID:zLcrLAmh error-chainのまともなサンプルがないんだけど、みんな使ってないのかな
612デフォルトの名無しさん
2017/08/19(土) 14:23:54.00ID:FnHzgZW7 crates.ioのreverse dependenciesが10ページを超えているようなcrateを「みんな使ってない」はずがない
GitHubのexamplesでなんやかんや事足りるからなあ
GitHubのexamplesでなんやかんや事足りるからなあ
613デフォルトの名無しさん
2017/08/19(土) 14:28:59.69ID:IJZoKA+S 「Notepad++」v7.5が公開、“LaTeX”や“Rust”、“Erlang”など19言語をサポート
http://forest.watch.impress.co.jp/docs/news/1076002.html
http://forest.watch.impress.co.jp/docs/news/1076002.html
614デフォルトの名無しさん
2017/08/19(土) 15:21:50.70ID:sXEKiJ8x error-chainてメインでしか使えない?
615デフォルトの名無しさん
2017/08/19(土) 15:24:47.15ID:sXEKiJ8x 日本語の記事もほぼないし
616デフォルトの名無しさん
2017/08/19(土) 15:47:44.15ID:nyFhS1vK テキストエディタも高機能な奴は起動が遅かったり動作が重い印象がある
617デフォルトの名無しさん
2017/08/19(土) 16:40:03.65ID:pL/zMRBl >>611
error-chain、なんか使いにくそうと勝手に思い込んでる
error-chain、なんか使いにくそうと勝手に思い込んでる
618デフォルトの名無しさん
2017/08/19(土) 16:53:30.74ID:FnHzgZW7 >>615
むしろ、Rust界隈でまともな日本語記事とやらがどれだけあるのやら……
むしろ、Rust界隈でまともな日本語記事とやらがどれだけあるのやら……
619デフォルトの名無しさん
2017/08/19(土) 23:55:33.96ID:nyFhS1vK >>613
Notepad++ってちょっと重い。SakuraEditorより重いと思う。あとSDIで使えなかった気がする
Notepad++ってちょっと重い。SakuraEditorより重いと思う。あとSDIで使えなかった気がする
620デフォルトの名無しさん
2017/08/20(日) 00:02:30.31ID:oGIfVBlS 直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
621デフォルトの名無しさん
2017/08/20(日) 15:00:56.50ID:pZQ2byHx 標準的なステーメントや型、メソッドなどがずらずら並んだ資料とかないのかな
エディタ用に定義ファイルを作りたいのだがLearning的なページだと全部載っていなくて・・・
エディタ用に定義ファイルを作りたいのだがLearning的なページだと全部載っていなくて・・・
622デフォルトの名無しさん
2017/08/20(日) 16:16:49.80ID:T53roUwE623デフォルトの名無しさん
2017/08/20(日) 21:48:27.38ID:tw1yQ9/1 いくつか↓のコードについて質問させてください。
https://play.rust-lang.org/?gist=b2fe59eb7aee706b6acb67bb9709967f&version=stable
1. PartialEqが実装されていないというエラーが出てしまうのですがどう対応したら良いのでしょうか?
試しに
#[derive(PartialEq)]
pub trait Serialize {
としたところerror: `derive` may only be applied to structs, enums and unionsというエラーが出てしまいました。traitにPartialEqを持たせることはできないのでしょうか?
2. error[E0277]: the trait bound `std::vec::Vec<&Serialize>: std::iter::FromIterator<Value<'_>>` is not satisfiedというエラーですが、これはどのようなコードにすれば良いのでしょうか?解決方法が全く思い浮かびませんでした。
ちなみに、enumでArray(Vec<Value>)ではなくArray(Vec<&'a Serialize>)となっている理由は外から型?を追加したいためです。
よろしくお願い致します。
https://play.rust-lang.org/?gist=b2fe59eb7aee706b6acb67bb9709967f&version=stable
1. PartialEqが実装されていないというエラーが出てしまうのですがどう対応したら良いのでしょうか?
試しに
#[derive(PartialEq)]
pub trait Serialize {
としたところerror: `derive` may only be applied to structs, enums and unionsというエラーが出てしまいました。traitにPartialEqを持たせることはできないのでしょうか?
2. error[E0277]: the trait bound `std::vec::Vec<&Serialize>: std::iter::FromIterator<Value<'_>>` is not satisfiedというエラーですが、これはどのようなコードにすれば良いのでしょうか?解決方法が全く思い浮かびませんでした。
ちなみに、enumでArray(Vec<Value>)ではなくArray(Vec<&'a Serialize>)となっている理由は外から型?を追加したいためです。
よろしくお願い致します。
624623
2017/08/20(日) 22:15:56.31ID:tw1yQ9/1 すみません、少し修正したものをアップしました。よろしくお願い致します。
https://play.rust-lang.org/?gist=e29af50f281802f700c0bdf8d676da54&version=stable
https://play.rust-lang.org/?gist=e29af50f281802f700c0bdf8d676da54&version=stable
625デフォルトの名無しさん
2017/08/20(日) 22:56:17.35ID:JGkv/tSR トレイトと型、ライフタイムパラメータと型パラメータの区別が付いてないような、
pub enum Value<'a> {
Nil,
Array(Vec<&'a Serialize>),
}
これとか、書くなら
pub enum Value<'a, T> where T: 'a + Serialize, {
Nil,
Array(Vec<&'a T>),
}
こうでは?
> impl<'a> Serialize for Value<'a>
...
pub enum Value<'a> {
Nil,
Array(Vec<&'a Serialize>),
}
これとか、書くなら
pub enum Value<'a, T> where T: 'a + Serialize, {
Nil,
Array(Vec<&'a T>),
}
こうでは?
> impl<'a> Serialize for Value<'a>
...
626デフォルトの名無しさん
2017/08/20(日) 23:13:22.65ID:T53roUwE 一応impl<'a> PartialEq for &'a Serializeはできる
クソの役にも立たないからやるべきでないが
クソの役にも立たないからやるべきでないが
627623
2017/08/21(月) 01:00:32.98ID:FwjdF0gP >>625
ありがとうございます!
頂いたpub enum Value<'a, T> where T: 'a + Serialize, {を入れてみたところ以下のようなエラーになりました
error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/value/serialize.rs:10:24
|
10 | impl<'a> Serialize for Value<'a> {
| ^^^^^^^^^ expected 1 type argument
この場合Serializeを実装した型を追加で指定しないといけないと思うのですが、例えば
struct UUID {
uuid: u128,
}
impl Serialize for UUID {
}
こんな感じの型をライブラリ使用者が外部から追加しようとした場合、教えていただいた書き方だとどのように指定すれば実現できるのでしょうか?
あと最後の…(省略されてる?)が気になります…
>>626
そんな書き方もできるんですね!参考になります!
ありがとうございます!
頂いたpub enum Value<'a, T> where T: 'a + Serialize, {を入れてみたところ以下のようなエラーになりました
error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/value/serialize.rs:10:24
|
10 | impl<'a> Serialize for Value<'a> {
| ^^^^^^^^^ expected 1 type argument
この場合Serializeを実装した型を追加で指定しないといけないと思うのですが、例えば
struct UUID {
uuid: u128,
}
impl Serialize for UUID {
}
こんな感じの型をライブラリ使用者が外部から追加しようとした場合、教えていただいた書き方だとどのように指定すれば実現できるのでしょうか?
あと最後の…(省略されてる?)が気になります…
>>626
そんな書き方もできるんですね!参考になります!
628デフォルトの名無しさん
2017/08/21(月) 01:35:15.12ID:bqQguu/k >error[E0243]: wrong number of type arguments: expected 1, found 0
この場合、impl<'a, T> Serialize for Value<'a, T>としなければならない。というかエラーメッセージが言っていることそのもの
ところで、Value::Arrayには複数種類の型の値を入れることを想定している?
だとしたら>>625のような型パラメータによる手法は適さないと思う
実現したい事が分からないから具体的な提案はできないけれど、とりあえずArrayのなかに&SerializeやT: Serializeを持たせる以外の方針が必要だと思う
例えば、serde_json::ValueだとArrayの中にT: Serializeでなく、Valueを入れ子に持っている
この場合、impl<'a, T> Serialize for Value<'a, T>としなければならない。というかエラーメッセージが言っていることそのもの
ところで、Value::Arrayには複数種類の型の値を入れることを想定している?
だとしたら>>625のような型パラメータによる手法は適さないと思う
実現したい事が分からないから具体的な提案はできないけれど、とりあえずArrayのなかに&SerializeやT: Serializeを持たせる以外の方針が必要だと思う
例えば、serde_json::ValueだとArrayの中にT: Serializeでなく、Valueを入れ子に持っている
629623
2017/08/21(月) 02:32:19.49ID:FwjdF0gP >>628
> ところで、Value::Arrayには複数種類の型の値を入れることを想定している?
はい、いろんな型を入れたいです。
今現在↓みたいになっていて(コンパイルできない)改行が多くて書き込みできなかったので改行を減らしてあります。
pub enum Value<'a> {
Nil, Bool(bool), Int8(i8), Int16(i16), Int32(i32), Int64(i64), UInt8(u8), UInt16(u16), UInt32(u32), UInt64(u64),
Float32(f32), Float64(f64), Binary(Vec<u8>), String(String), Array(Vec<&'a Serialize>), Map(HashMap<String, &'a Serialize>),
}
これをライブラリとして公開して、そのライブラリの使用者が
struct UUID {
uuid: u128,
}
impl Serialize for UUID {
fn serialize(&self) -> Vec<u8> {
unimplemented!()
}
}
こんな感じにSerializeをUUIDに実装すればArray(Vec<&'a Serialize>)の中に入れられるのではないかと思い実装しました(だめだったのですが…)
serde_jsonも参考にしたのですがArrayの中にValueを入れてしまうとライブラリの使用者が型を追加できないのではと思って上の感じにしました。
何かいい方法はないのでしょうか?
> ところで、Value::Arrayには複数種類の型の値を入れることを想定している?
はい、いろんな型を入れたいです。
今現在↓みたいになっていて(コンパイルできない)改行が多くて書き込みできなかったので改行を減らしてあります。
pub enum Value<'a> {
Nil, Bool(bool), Int8(i8), Int16(i16), Int32(i32), Int64(i64), UInt8(u8), UInt16(u16), UInt32(u32), UInt64(u64),
Float32(f32), Float64(f64), Binary(Vec<u8>), String(String), Array(Vec<&'a Serialize>), Map(HashMap<String, &'a Serialize>),
}
これをライブラリとして公開して、そのライブラリの使用者が
struct UUID {
uuid: u128,
}
impl Serialize for UUID {
fn serialize(&self) -> Vec<u8> {
unimplemented!()
}
}
こんな感じにSerializeをUUIDに実装すればArray(Vec<&'a Serialize>)の中に入れられるのではないかと思い実装しました(だめだったのですが…)
serde_jsonも参考にしたのですがArrayの中にValueを入れてしまうとライブラリの使用者が型を追加できないのではと思って上の感じにしました。
何かいい方法はないのでしょうか?
630623
2017/08/21(月) 02:40:57.36ID:FwjdF0gP https://github.com/3Hren/msgpack-rust/blob/master/rmpv/src/lib.rs#L416
このライブラリだとValueの中にExtを作ってその中にシリアライズ済みのデータを入れてるみたいですね。
確かにこれならいけそうですが、Valueの中にシリアライズ済みのデータを入れるのがなんだかスッキリしないです…
これ以外には方法はないのでしょうか?
このライブラリだとValueの中にExtを作ってその中にシリアライズ済みのデータを入れてるみたいですね。
確かにこれならいけそうですが、Valueの中にシリアライズ済みのデータを入れるのがなんだかスッキリしないです…
これ以外には方法はないのでしょうか?
631デフォルトの名無しさん
2017/08/21(月) 05:08:14.26ID:G0wb4QJd (ageるなウザい)
633デフォルトの名無しさん
2017/08/21(月) 16:25:46.95ID:oGU2m9lq rustの使用者は型をガチガチに固めて型安全であることを至上としてる風があるから
利用者が自由に型を追加できることの方にスッキリしない印象を持つのではなかろうか
例えば、hyperのHTTP Headerとかね
それでも尚そうしたいのであればrmpvなやり方は正しいんじゃないのかね
利用者が自由に型を追加できることの方にスッキリしない印象を持つのではなかろうか
例えば、hyperのHTTP Headerとかね
それでも尚そうしたいのであればrmpvなやり方は正しいんじゃないのかね
635デフォルトの名無しさん
2017/08/21(月) 21:48:43.99ID:rYDUfKH7 ライブラリを作る側はゆるゆるにする、使う側はギチギチにする、だったかな
636デフォルトの名無しさん
2017/08/22(火) 02:48:14.20ID:womi0ii/ 何の言語における誰の格言だい?
Rustライブラリの話じゃないよな, Rustはno_std + unsafeでもしないと作る時すらギチギチだものな
Rustライブラリの話じゃないよな, Rustはno_std + unsafeでもしないと作る時すらギチギチだものな
637デフォルトの名無しさん
2017/08/22(火) 09:17:41.34ID:C9KUE8jE638デフォルトの名無しさん
2017/08/22(火) 09:30:00.19ID:DDLonIhk >>637
Specialize可能な実装を表す修飾語
https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.md
Specialize可能な実装を表す修飾語
https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.md
639デフォルトの名無しさん
2017/08/22(火) 09:35:30.79ID:deDFrfsy rustconfのまとめ誰かたのむ
640デフォルトの名無しさん
2017/08/22(火) 09:41:20.78ID:C9KUE8jE641デフォルトの名無しさん
2017/08/22(火) 23:09:44.08ID:SJLsCwn3 impl-specializationってfor T以外に具象型でも出来たのか。パラメタ型が現れればいいのか。
>>640
まだRFC #1331が出来てないから正式な文法は存在しない。
自分が使ってるrustcのソース読む以外に文法知る術はないよ。
>>640
まだRFC #1331が出来てないから正式な文法は存在しない。
自分が使ってるrustcのソース読む以外に文法知る術はないよ。
642デフォルトの名無しさん
2017/08/23(水) 02:50:24.84ID:4QoHymGs チルダ記号~、owned pointer が廃止されてから余ってるけど、何かに使わないのかね
643デフォルトの名無しさん
2017/08/23(水) 07:25:27.68ID:B+nj/ke1 オフラインで開発するときにどうすべきかを書いたドキュメントってないの?
インストール方法とかライブラリの取得・展開方法とか
インストール方法とかライブラリの取得・展開方法とか
644デフォルトの名無しさん
2017/08/23(水) 07:54:23.48ID:4QoHymGs https://www.rust-lang.org/ja-JP/other-installers.html にインストーラーあるだろ。
あるいはレポジトリからソース落として ./configure; make; sudo make install で終わらんか?
依存ライブラリは、Cargo.toml で
[dependencies]
foo = { git = "https://github.com/hoge/foo.git" }
の代わりに、https://github.com/hoge/foo をクローンして来て、
[dependencies.foo]
path = "../foo"
こんな感じでパスを与えれば良い。
あるいはレポジトリからソース落として ./configure; make; sudo make install で終わらんか?
依存ライブラリは、Cargo.toml で
[dependencies]
foo = { git = "https://github.com/hoge/foo.git" }
の代わりに、https://github.com/hoge/foo をクローンして来て、
[dependencies.foo]
path = "../foo"
こんな感じでパスを与えれば良い。
645デフォルトの名無しさん
2017/08/23(水) 09:46:49.23ID:OBNmODWh 最近のpythonではpipでコンパイル済みのバイナリをダウンロードしてインストールしてくれるけど
rustの世界でもこうなりませんかね
rustの世界でもこうなりませんかね
646デフォルトの名無しさん
2017/08/23(水) 12:24:06.11ID:18+Jkbm8 前も同じ質問してたな
rpmやbrew, windows storeにバイナリをアップすればいいんじゃないの
ユーザ向けのバイナリ配布環境なんてrustやcargoが整備するモノじゃないでしょ
どうせrustやcargoを扱うのは開発者で
開発者はバイナリよりソースの方が色んな面で助かる
rpmやbrew, windows storeにバイナリをアップすればいいんじゃないの
ユーザ向けのバイナリ配布環境なんてrustやcargoが整備するモノじゃないでしょ
どうせrustやcargoを扱うのは開発者で
開発者はバイナリよりソースの方が色んな面で助かる
647デフォルトの名無しさん
2017/08/23(水) 13:30:39.91ID:H3GKgLxU cargoにオフラインモードってないの?
648デフォルトの名無しさん
2017/08/23(水) 23:29:11.08ID:iIVYU9Hy >>643,647
めんどくせぇ話ししてんな。
alexcrichtonが頑なに拒み続けてるからオフラインでcargoは*まとも*につかえね。
依存crateが全部ローカルにあれば問題ないけど、そもそも外部crateがcargoに
依存してるせいで結局、ネットワークにアクセスする。それにapache archivaみたいなのが
rustにはないからローカルで管理もできんし、cargo-vendorもcargo-local-registryも開発止まってる。
現状、依存グラフの全てを事前にローカルにダウンロードするツールがない。
cargo側のindexもcargo.lock更新する必要もないのに
ネットワークアクセスしてオフラインでクラッシュする問題は
そろそろ落ち着いてきたけど、rustcの依存関係調べるあたりが
腐ってるからそっちも影響してくる。これの問題は今、
インクリメンタルコンパイル実装の障害になってるからどうにかしてる最中。
海外は日本と違って無線LAN環境普及してるからか、
ちょっとオフラインになっただけでテストすら走らせられなくなったりでissue飛びまくってんだけどね。
結局replaceも糞でpatchに置き換わるし。
めんどくせぇ話ししてんな。
alexcrichtonが頑なに拒み続けてるからオフラインでcargoは*まとも*につかえね。
依存crateが全部ローカルにあれば問題ないけど、そもそも外部crateがcargoに
依存してるせいで結局、ネットワークにアクセスする。それにapache archivaみたいなのが
rustにはないからローカルで管理もできんし、cargo-vendorもcargo-local-registryも開発止まってる。
現状、依存グラフの全てを事前にローカルにダウンロードするツールがない。
cargo側のindexもcargo.lock更新する必要もないのに
ネットワークアクセスしてオフラインでクラッシュする問題は
そろそろ落ち着いてきたけど、rustcの依存関係調べるあたりが
腐ってるからそっちも影響してくる。これの問題は今、
インクリメンタルコンパイル実装の障害になってるからどうにかしてる最中。
海外は日本と違って無線LAN環境普及してるからか、
ちょっとオフラインになっただけでテストすら走らせられなくなったりでissue飛びまくってんだけどね。
結局replaceも糞でpatchに置き換わるし。
649デフォルトの名無しさん
2017/08/24(木) 00:17:41.78ID:l7HQ+RMc 自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑
rustc直打ちなら問題ないけど非標準のCrateをどうするんだという話に
rustc直打ちなら問題ないけど非標準のCrateをどうするんだという話に
650デフォルトの名無しさん
2017/08/24(木) 00:28:13.68ID:31vrvgnR Frequently Asked Questions
http://doc.crates.io/faq.html#how-can-cargo-work-offline
> How can Cargo work offline?
> ...(中略)
> As of Rust 1.11.0 Cargo understands a new flag, --frozen, which is an assertion that it shouldn't touch the network.
http://doc.crates.io/faq.html#how-can-cargo-work-offline
> How can Cargo work offline?
> ...(中略)
> As of Rust 1.11.0 Cargo understands a new flag, --frozen, which is an assertion that it shouldn't touch the network.
651デフォルトの名無しさん
2017/08/24(木) 02:10:25.35ID:2y1G8HO4 モバイルもさることながらオフライン限定サーバとかあるしなあ
652デフォルトの名無しさん
2017/08/24(木) 09:10:11.03ID:7OYe0+S4 よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな
海外っつーか米国は半端に無線LANが整備されまくってるから大変そうだなぁとは思う
海外っつーか米国は半端に無線LANが整備されまくってるから大変そうだなぁとは思う
653デフォルトの名無しさん
2017/08/24(木) 10:02:40.03ID:N2QX0p2s654デフォルトの名無しさん
2017/08/24(木) 10:56:17.70ID:yyGwhDVO655デフォルトの名無しさん
2017/08/24(木) 11:36:23.74ID:nec4MnrL 移動中という状態を除外したら移動体通信ではなくて只の無線通信
656デフォルトの名無しさん
2017/08/24(木) 18:47:05.57ID:NSzs0jC1 個人的にはcargoが色々手を回しすぎなのが問題だと思うよ
ちょっと想定外だけど真っ当な使い方をしようとすると面倒が増えて、それをissueとして投げるしか無いからcargoがますます巨大になる
https://github.com/rust-lang/rust-roadmap/issues/12
↑でもちょっと出てるけど、今のcargoはインターフェイスとしてそれなりに使えるので、rustc以上cargo未満なツールを作ってくれるとありがたい
他のビルドツールとの連携とか今はかなり面倒。
ちょっと想定外だけど真っ当な使い方をしようとすると面倒が増えて、それをissueとして投げるしか無いからcargoがますます巨大になる
https://github.com/rust-lang/rust-roadmap/issues/12
↑でもちょっと出てるけど、今のcargoはインターフェイスとしてそれなりに使えるので、rustc以上cargo未満なツールを作ってくれるとありがたい
他のビルドツールとの連携とか今はかなり面倒。
657デフォルトの名無しさん
2017/08/25(金) 06:54:52.63ID:fv88sy22 struct Node<T> {
data: T,
}
があって、
struct Container<T> {
nodes: Vec<Rc<RefCell<Node<T>>>>,
}
のようなContainerを定義して、このコンテナから&Tに直接アクセスするiteratorを作りたい
のですが、どうしたら出来るでしょうか?(そもそも出来るのでしょうか?)
雰囲気的には↓のような感じになると思うのですがライフタイムがよく分かりません。
https://play.rust-lang.org/?gist=fb73c80c4303adc14083d049de6ccf3e&version=stable
data: T,
}
があって、
struct Container<T> {
nodes: Vec<Rc<RefCell<Node<T>>>>,
}
のようなContainerを定義して、このコンテナから&Tに直接アクセスするiteratorを作りたい
のですが、どうしたら出来るでしょうか?(そもそも出来るのでしょうか?)
雰囲気的には↓のような感じになると思うのですがライフタイムがよく分かりません。
https://play.rust-lang.org/?gist=fb73c80c4303adc14083d049de6ccf3e&version=stable
658デフォルトの名無しさん
2017/08/25(金) 12:13:31.91ID:wqoYH6g/659デフォルトの名無しさん
2017/08/25(金) 15:09:41.26ID:yTj1cv1p >>657
この例ではRefCell::borrowが返すRef (owned)から<Ref as Deref>::derefによってRefからの借用として&Node<T>を得ているわけだけど、
<NodeIter as Iterator>::nextの末尾でRefがdropされているから借用は関数の外まで生き残らない
&Tを直接返す方法があるとは思えないけど、Ref<'a, T>を返すことはできる
https://play.rust-lang.org/?gist=5c4a7b0de00dcc6ec0612b8846dd6bfb&version=stable
この例ではRefCell::borrowが返すRef (owned)から<Ref as Deref>::derefによってRefからの借用として&Node<T>を得ているわけだけど、
<NodeIter as Iterator>::nextの末尾でRefがdropされているから借用は関数の外まで生き残らない
&Tを直接返す方法があるとは思えないけど、Ref<'a, T>を返すことはできる
https://play.rust-lang.org/?gist=5c4a7b0de00dcc6ec0612b8846dd6bfb&version=stable
660デフォルトの名無しさん
2017/08/25(金) 15:38:40.83ID:J7NBnr1n661デフォルトの名無しさん
2017/08/26(土) 10:47:16.34ID:O+zDlIdw このスレで話題にするのはアレかもしれないが、 Servo nightly build が
いつ試してみても盛大にぶっ壊れていて、開発順調なのか心配になる。
Rust で開発していると mutability で詰むことがあって、よーく考えてデータ構造なり
を変更すればうまく解決できることが多いし、コードもより良くなっていることが多い。
でもその変更って毎回異なった自明でないものだし、局所的なもので済まないこともある。
Servo くらい大規模なプログラムになったとき、もうどうしようもなく詰んだりしないんだろうか。
いつ試してみても盛大にぶっ壊れていて、開発順調なのか心配になる。
Rust で開発していると mutability で詰むことがあって、よーく考えてデータ構造なり
を変更すればうまく解決できることが多いし、コードもより良くなっていることが多い。
でもその変更って毎回異なった自明でないものだし、局所的なもので済まないこともある。
Servo くらい大規模なプログラムになったとき、もうどうしようもなく詰んだりしないんだろうか。
662デフォルトの名無しさん
2017/08/26(土) 11:32:33.62ID:mrwT3sC4 やっぱブラウザ作るには向いてません
てなったら悲しいな
てなったら悲しいな
663デフォルトの名無しさん
2017/08/26(土) 12:07:35.67ID:O+zDlIdw 気づいたら struct のメンバがほとんど RefCell になってるとかありそう。
664デフォルトの名無しさん
2017/08/26(土) 12:14:24.38ID:3J5PaXHT Rustに熟知してれば変更は自明であり、機能分解点を精査してれば変更は局所的なもので済むんでないかな
小規模なモノを無計画に作るにはRustは適さない言語だと心底思う
Servoは長いこと開発続けてるけどあんまり精力的に開発する気なさそうだよなぁ
Mozillaが営利団体として潰れそうだし・・・実際Mozilla Japanは潰れてるorz
小規模なモノを無計画に作るにはRustは適さない言語だと心底思う
Servoは長いこと開発続けてるけどあんまり精力的に開発する気なさそうだよなぁ
Mozillaが営利団体として潰れそうだし・・・実際Mozilla Japanは潰れてるorz
665デフォルトの名無しさん
2017/08/26(土) 12:48:20.45ID:qL+5xDF6 キノコ雲を見上げるsteveklabnikの画像がRust界隈でにわかにミーム化しつつあって笑う
666デフォルトの名無しさん
2017/08/26(土) 16:16:56.49ID:1psTTOfA servoで作ったモジュールがfirefoxに取り込まれていっているし、実験プロジェクトとしては成功なのでは
667デフォルトの名無しさん
2017/08/26(土) 22:25:08.80ID:YYTb5WfA Rustに限った話ではないですけど
・構文解析
・ハイライト
・オブジェクト追跡
・入力補完
などの機能を持ち高速に動作するテキストエディタってないですかね?
JavaやNode.jsを使った物は総じて動作が重いですし、Cなどで書かれてネイティブな物は機能性で劣る気がします
・構文解析
・ハイライト
・オブジェクト追跡
・入力補完
などの機能を持ち高速に動作するテキストエディタってないですかね?
JavaやNode.jsを使った物は総じて動作が重いですし、Cなどで書かれてネイティブな物は機能性で劣る気がします
668デフォルトの名無しさん
2017/08/27(日) 01:57:19.50ID:OZ/i8G6F >>667
Node.jsで作ったエディタが重いってそれVSCodeの前で言えるの?
Node.jsで作ったエディタが重いってそれVSCodeの前で言えるの?
669デフォルトの名無しさん
2017/08/27(日) 02:04:39.75ID:mxFQINt9 ageるなアホ
VSCodeつーかAtomは実際重たいからな
あとスレッドぶん回すからノートPCで動かすとバッテリー消費がシャレにならん
JetBrainsのCLionにRust Plugin入れたらブレークポイントも貼れるし良いぞ
誰かJetBrainsから有料版出る前にブレークポイント貼れるようにするPR出さないかねぇ
地味に高いから購入する気にはならんのだよな
VSCodeつーかAtomは実際重たいからな
あとスレッドぶん回すからノートPCで動かすとバッテリー消費がシャレにならん
JetBrainsのCLionにRust Plugin入れたらブレークポイントも貼れるし良いぞ
誰かJetBrainsから有料版出る前にブレークポイント貼れるようにするPR出さないかねぇ
地味に高いから購入する気にはならんのだよな
670デフォルトの名無しさん
2017/08/27(日) 02:12:16.71ID:PbodRtd5 Rustプラグインを単体の製品にするとは思えんけどねえ
彼らは例えばScalaのプラグインとかも手がけているけど別に製品化している訳じゃないし
彼らは例えばScalaのプラグインとかも手がけているけど別に製品化している訳じゃないし
671デフォルトの名無しさん
2017/08/27(日) 02:34:48.02ID:SDSllFYF VSCode重たくて殺意生える
いちいちワンテンポ遅いんじゃ
いちいちワンテンポ遅いんじゃ
672デフォルトの名無しさん
2017/08/27(日) 04:11:59.30ID:y+D9Ax/7 Vimすらも重いことあるんだけど俺
673デフォルトの名無しさん
2017/08/27(日) 07:38:59.45ID:mxFQINt9 vi使えよ、viの軽さに慣れたらvimはそりゃ重たいでしょ
>>670
Scalaなんて10年以上前に流行った言語のIDEを今更有料化しても売れないだろうからな
Rustは今現在流行ってる(?)言語だし売るんじゃねーのかね
>>670
Scalaなんて10年以上前に流行った言語のIDEを今更有料化しても売れないだろうからな
Rustは今現在流行ってる(?)言語だし売るんじゃねーのかね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- パワフル女性世界3位に高市首相 米誌フォーブス選出 [蚤の市★]
- 【米FRB】0.25%利下げ決定 3会合連続、雇用下支え [蚤の市★]
- テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント [ひかり★]
- 【S.RIDE】「忘年会の幹事ずるい」 ソニー系配車アプリの広告が物議…… 運営が謝罪「配慮に欠ける不適切な表現」掲出終了に [ぐれ★]
- アイヌ民族の「戸籍簿」がヤフオクで落札 団体「人権無視」と憤り [蚤の市★]
- 「身を切る改革」どこへ? 維新「身内」への公金支出、地方でも続々 [蚤の市★]
- 高市「野党はもう債権とか為替の話はしないで!よく分からないから答えない!」 [884040186]
- 豚汁の弱点
- 人生がつまらんやつ、130円で大根買え。
- 【悲報】教育ママ「ギャオオオオオン!息子が大麻吸ってるのお!!」⇨中3の息子を警察に突き出し全てを終わらせる [455031798]
- 【画像】東京都民「助けて!満員電車もう無理いいぃぃいいぃぃぃいいいいいぃ😭」!!!! [732289945]
- 【堂上隼人】ソフトバンク幹部「よし更生してる」→現在までに逮捕12回、レイプ被害者15人
