Size: a a a

Rust — русскоговорящее сообществo

2020 March 02

∅ч

∅ ч in Rust — русскоговорящее сообществo
Gymmasssorla
Это method-like macro (не забываем, что в Rust есть функции, есть ассоциированные функции, есть методы)
хм, ну вообще да
источник

P

Pavel in Rust — русскоговорящее сообществo
Gymmasssorla
impl Foo {
// Ассоциированная функция
fn a() {}

// Метод
fn a(&self) {}
}
вроде даже в ошибках компилятора она называется статиком
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Gymmasssorla
impl Foo {
// Ассоциированная функция
fn a() {}

// Метод
fn a(&self) {}
}
struct Foo {}

impl Foo {
   pub fn foo() {
   }
   
   pub fn bar(&self) {}
}


fn main() {
   Foo::foo();
   Foo::bar(&Foo {});
}


с точки зрения компилятора, разницы нет
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
это всё ассоциированные функции. оно же только сахару дает немного и всё
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Я говорю то, что написано в TRPL: https://doc.rust-lang.org/book/ch05-03-method-syntax.html#associated-functions
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
ок
источник

В

Вафель in Rust — русскоговорящее сообществo
🦉 ⁣
это всё ассоциированные функции. оно же только сахару дает немного и всё
Справедливости ради object-safe трейты не могут иметь асоциированных функций, только методы
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Вафель
Справедливости ради object-safe трейты не могут иметь асоциированных функций, только методы
и как это увидеть на примере?
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Вафель
Справедливости ради object-safe трейты не могут иметь асоциированных функций, только методы
А что значит object-safe?
источник

В

Вафель in Rust — русскоговорящее сообществo
да вы шутите... ща пример никидаю
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Нет, вру.
Result<Option<Result<T, E1>>, E2>
Боде
источник

ph

pl 🦑 hk in Rust — русскоговорящее сообществo
источник

r

red75prime in Rust — русскоговорящее сообществo
Кстати, если не ошибаюсь, нет технических проблем добавить в vtable функцию без параметра self. Просто ещё не сделали.
источник

В

Вафель in Rust — русскоговорящее сообществo
🦉 ⁣
и как это увидеть на примере?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
red75prime
Кстати, если не ошибаюсь, нет технических проблем добавить в vtable функцию без параметра self. Просто ещё не сделали.
А зачем?
источник

В

Вафель in Rust — русскоговорящее сообществo
red75prime
Кстати, если не ошибаюсь, нет технических проблем добавить в vtable функцию без параметра self. Просто ещё не сделали.
Ну, непонятно где хранить vtable
источник

В

Вафель in Rust — русскоговорящее сообществo
а, стоп
источник

r

red75prime in Rust — русскоговорящее сообществo
Вафель
Ну, непонятно где хранить vtable
Гм. Да. Что-то тут не так.
источник

r

red75prime in Rust — русскоговорящее сообществo
Если у нас есть &dyn Tr, то вызвать <erased-type as Tr>::foo() технически должно быть можно. Но синтаксиса для этого нет
источник

В

Вафель in Rust — русскоговорящее сообществo
Ну да
источник