Size: a a a

2020 May 20

G

Gymmasssorla in rust_offtopic
Но в релиз почему-то только очень мелкие изменения по синтаксису попадают))))
источник

V

Vetro in rust_offtopic
Ниче ниче, там конст дженерики пилятся потихоньку
источник

G

Gymmasssorla in rust_offtopic
Потихооооооньку0)))
источник

V

Vetro in rust_offtopic
К 2022 году точно допилят
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
по крайней мере если в это вкладывать наследование и динамические вызовы
кстати в расте можно сделать и наследование и динамические вызовы. с болью но можно.
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
кстати в расте можно сделать и наследование и динамические вызовы. с болью но можно.
И в Си можно
источник

V

Vetro in rust_offtopic
Gymmasssorla
И в Си можно
void*?
источник

G

Gymmasssorla in rust_offtopic
Кладёшь суперкласс первым полем
источник

G

Gymmasssorla in rust_offtopic
Готово
источник

V

Vetro in rust_offtopic
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
кстати в расте можно сделать и наследование и динамические вызовы. с болью но можно.
динамические вызовы можно, а вот наследование уже никак (если не брать за наследование таскание vtable* руками)
источник

G

Gymmasssorla in rust_offtopic
Можно конвертировать zero-cost наследник к суперклассу
источник

AZ

Alex Zhukovsky in rust_offtopic
Gymmasssorla
И в Си можно
ну не извращайся ну
источник

AZ

Alex Zhukovsky in rust_offtopic
на си можно написатьинтерпретатор джавы, только зачем
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
динамические вызовы можно, а вот наследование уже никак (если не брать за наследование таскание vtable* руками)
use core::ops::Deref;
struct Parent { field: i32 }
struct Child {
 par: Parent,
 field2: i32,
}
impl Deref for Child {
   type Target = Parent;
   fn deref(&self) -> &Self::Target {
       &self.par
   }
}

fn foo(data: Box<dyn Deref<Target = Parent>>) {
 let _ = data.field + 1;
}
источник

p

polunin.ai in rust_offtopic
придется обмазаться только боксами с dyn Deref
источник

p

polunin.ai in rust_offtopic
а так самое обычное наследование и дин вызовы
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
use core::ops::Deref;
struct Parent { field: i32 }
struct Child {
 par: Parent,
 field2: i32,
}
impl Deref for Child {
   type Target = Parent;
   fn deref(&self) -> &Self::Target {
       &self.par
   }
}

fn foo(data: Box<dyn Deref<Target = Parent>>) {
 let _ = data.field + 1;
}
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
а так самое обычное наследование и дин вызовы
This pattern does not introduce subtyping between Foo and Bar like inheritance in Java or C++ does. Furthermore, traits implemented by Foo are not automatically implemented for Bar, so this pattern interacts badly with bounds checking and thus generic programming.

Using this pattern gives subtly different semantics from most OO languages with regards to self. Usually it remains a reference to the sub-class, with this pattern it will be the 'class' where the method is defined.
источник

SP

Stanislav Popov in rust_offtopic
лол утиная типизация
источник