Size: a a a

2020 May 07

AZ

Alex Zhukovsky in rust_offtopic
public interface IUnit {
   double ToMeters();
}

public static class XUnit {
   public static double Add(this T self, T other) where T : IUnit =>
       self.ToMeters() + other.ToMeters();
}
источник

p

polunin.ai in rust_offtopic
не понял что значит this T self, это же только в расширяющих классах можно так
источник

p

polunin.ai in rust_offtopic
а, это и есть расширение, кек
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Я только не понял, зачем T
источник

p

polunin.ai in rust_offtopic
у меня так вышло
источник

p

polunin.ai in rust_offtopic
хотя лучше реализовать IUnit для double
источник

p

polunin.ai in rust_offtopic
а блять это же не раст, тут так не выйдет
источник

p

polunin.ai in rust_offtopic
и ньютайпов нету
источник

AZ

Alex Zhukovsky in rust_offtopic
ты оч сложно пытаешься делать простую задачу
источник

p

polunin.ai in rust_offtopic
я пытаюсь ее решить нормально
источник

AZ

Alex Zhukovsky in rust_offtopic
её можно решить нормально с помощью ООП инструментов
источник

AZ

Alex Zhukovsky in rust_offtopic
вон как про класс расширения, ты про него неподумал, а он есть
источник

p

polunin.ai in rust_offtopic
хм, а так с operator+ можно сделать?
источник

AZ

Alex Zhukovsky in rust_offtopic
нельзя, это не плюсы
источник

AZ

Alex Zhukovsky in rust_offtopic
ну или делай абстрактный класс вместо интерфейса, но я их не люблю
источник

RP

Roman Proskuryakov in rust_offtopic
polunin.ai
хм, а так с operator+ можно сделать?
как так?
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Экстеншном
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Нельзя, потому что операция должна быть нестатическим методом
источник

RP

Roman Proskuryakov in rust_offtopic
почему не выйдет?
источник

RP

Roman Proskuryakov in rust_offtopic
можно же сделать impl Add for YourType
источник