プログラミング言語 Rustat TECH
プログラミング言語 Rust - 暇つぶし2ch639:デフォルトの名無しさん
16/05/09 17:24:59.65 fW/7hyIs.net
rubyベストプラクティスもカニじゃなかった?

640:デフォルトの名無しさん
16/05/15 19:58:09.87 K33PvDY8.net
今年中に2.0出るのかな?

641:デフォルトの名無しさん
16/05/16 00:59:11.32 hYcI5Sh2.net
Rust、SemVerに準拠してるし、後方互換性をがっつり崩すような変更がない限り、1.x.yのままなんじゃない?

642:デフォルトの名無しさん
16/05/16 02:54:51.79 TWeJeTmL.net
今日で1周年か

643:デフォルトの名無しさん
16/05/16 13:25:33.90 khc6QXJf.net
Rustってオーバーロードないの?

644:デフォルトの名無しさん
16/05/16 13:40:14.34 3yHJ0Kd5.net
どういうオーバーロードかによる
例えば
fn push<P: AsRef<Path>>(&mut self, path: P)
impl AsRef<Path> for Path
impl AsRef<Path> for OsStr
impl<'a> AsRef<Path> for Cow<'a, OsStr>
impl AsRef<Path> for OsString
impl AsRef<Path> for str
impl AsRef<Path> for String
impl AsRef<Path> for PathBuf

645:641
16/05/16 14:29:24.99 khc6QXJf.net
fn push(a: u8)
fn push(a: u8, u32)
みたいにやりたかったです

646:デフォルトの名無しさん
16/05/16 14:45:17.97 4v1q9uFB.net
関数に関しては無い。型推論が面倒になるからだと思う。
メソッドに関してはある。traitとstruct(とenum)のimplで同名のメソッドを定義したらstruct優先。
2つ以上の異なるtraitが同名のメソッドを定義してて、2つともimplした型の場合はUFCで書かないとエラーになる。

647:デフォルトの名無しさん
16/05/16 15:21:22.82 LQrSqnuf.net
>>643
オペレータのオーバーロードならある。
use std::ops::Add;
struct A {}
impl Add<i32> for A {
type Output = i32;
fn add(self, rhs: i32) -> i32 {rhs}
}
impl Add<f32> for A {
type Output = f32;
fn add(self, rhs: f32) -> f32 {rhs}
}

648:デフォルトの名無しさん
16/05/18 07:21:57.85 zi3YbWFS.net
面倒だけどタプルに対してやってみるのは?
trait Push {
fn push(&mut self);
}
impl Push for (u8,) {
fn push(&mut self) { ... }
}
impl Push for (u8, u32) {
fn push(&mut self) { ... }
}
fn main() {
(0u8,).push();
(1u8, 2u32).push();
}

649:デフォルトの名無しさん
16/05/18 12:53:24.93 83U9cWax.net
>>648
変態!

650:デフォルトの名無しさん
16/05/18 15:50:42.49 4NyJw2NY.net
trait Push {
fn push(self, c: Container)
}
impl Push for u8
impl Push for (u8, u8)
container.push(1)
container.push((1, 2))

651:デフォルトの名無しさん
16/05/18 16:36:29.40 g+vOVBq1.net
>>648
それオーバーロードでもなんでもなくね?

652:デフォルトの名無しさん
16/05/18 20:51:59.07 pvzqVuHQ.net
>>651
でも同じもの表現してない?

653:デフォルトの名無しさん
16/05/19 01:39:05.88 yE0vr9/W.net
何かこのイカれたブログを思い出した。zero-overheadでheterogeneousなリストを作る話。
URLリンク(nercury.github.io)

654:デフォルトの名無しさん
16/05/30 22:31:42.67 FMy0/Tvb.net
2番め以降の変数の型が違うオーバーロード書けないのね…

655:デフォルトの名無しさん
16/06/01 22:24:24.45 JHsrsE//.net
オーバーロードが追加されることって絶対ないのかな?
めちゃくちゃRust使いたいんだけどこれがないせいで使えない。

656:デフォルトの名無しさん
16/06/01 22:49:23.73 JHsrsE//.net
trait Sql {
fn filter<T>(&self, value: T);
}
impl Sql for i32 {
fn filter(&self, value: i32) {
}
}
impl Sql for String {
fn filter(&self, value: String) {
}
}
みたいなことやりたいのですがエラーになってしまいます。
どうにかできないものでしょうか。

657:デフォルトの名無しさん
16/06/01 23:39:18.93 OaTzWyfO.net
>>656 引数の数が違ったら面倒だけど、この程度だったらtraitを多相にすればいいよ
URLリンク(play.rust-lang.org)
多相と同じ表現力のassociated typeでもいける。
URLリンク(play.rust-lang.org)

658:654
16/06/02 10:39:12.76 LfrYVCEY.net
>>657
ありがとうございます!
これでいけるか試してみます!

659:デフォルトの名無しさん
16/06/13 20:34:44.12 9cIQ9Ton.net
rustのsubredditにゲームの方のRustの投稿がちょくちょく来てたがホッケー選手まで出てくるとは思わなんだ。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch