Size: a a a

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

2020 October 14

p

polunin.ai in Rust — русскоговорящее сообществo
Эрик
А то будет у тебя

struct X;

#[sfinae]
impl Default for X {} // <- error originates here

fn main() {
X::default(); // <- but shows here
}
нет, у меня будет ошибка
foo! {
 Type // Error: Type: Clone is not satisfied
}
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
polunin.ai
Вообще это для проц макросов. Хочу имплементировать трейт для своего типа если входящий в макрос тип Clone. Но видимо не судьба🤷‍♀
Макро делает impl Marker for Struct
Рядом с декларацией трейта impl Trait for T where T: Clone + Marker
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Без комментариев?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Andrey Vlasov
Макро делает impl Marker for Struct
Рядом с декларацией трейта impl Trait for T where T: Clone + Marker
Struct может не быть Clone по другим причинам.
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
polunin.ai
Struct может не быть Clone по другим причинам.
Гений
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Ты как Царь, своей терминологией пользуешься?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
блять.
у меня есть
struct Foo { a: A, b: B }
и макрос делает
impl Trait<A> for Foo { fn foo(&self) -> A { self.a.clone() } }
impl Trait<B> for Foo { fn foo(&self) -> B { self.b.clone() } }
Но
если A или B !Clone, то код не компилируется. Но при этом в этом макросе принципиально пофиг реализуется трейт или нет, это важно для другого макроса который не имеет доступа к этому.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
мне главное чтобы в этом макросе реализовались трейты и ошибок компиляции не было. А если где-то в другом месте будет не хватать Trait<T> для Foo, то это логическая ошибка которую решает программист.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
я уже придумал решение, если переложить всю ответственность за реализациб трейта на пользователя но макрос тогда выйдет некрасивым.
источник

Э

Эрик in Rust — русскоговорящее сообществo
polunin.ai
блять.
у меня есть
struct Foo { a: A, b: B }
и макрос делает
impl Trait<A> for Foo { fn foo(&self) -> A { self.a.clone() } }
impl Trait<B> for Foo { fn foo(&self) -> B { self.b.clone() } }
Но
если A или B !Clone, то код не компилируется. Но при этом в этом макросе принципиально пофиг реализуется трейт или нет, это важно для другого макроса который не имеет доступа к этому.
Дерайв, нет?
источник

Э

Эрик in Rust — русскоговорящее сообществo
А, дерайвы не дают параметризовать трейт.
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
polunin.ai
блять.
у меня есть
struct Foo { a: A, b: B }
и макрос делает
impl Trait<A> for Foo { fn foo(&self) -> A { self.a.clone() } }
impl Trait<B> for Foo { fn foo(&self) -> B { self.b.clone() } }
Но
если A или B !Clone, то код не компилируется. Но при этом в этом макросе принципиально пофиг реализуется трейт или нет, это важно для другого макроса который не имеет доступа к этому.
Вот это решение почему не работает? https://t.me/rustlang_ru/336238
источник

p

polunin.ai in Rust — русскоговорящее сообществo
потому что Struct: Clone зависит от всех полей Struct а не от одного. Поэтому если где-то одно поле будет !Clone, то Struct: Clone + Marker не сработает.
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
polunin.ai
потому что Struct: Clone зависит от всех полей Struct а не от одного. Поэтому если где-то одно поле будет !Clone, то Struct: Clone + Marker не сработает.
Struct: Clone зависит от того, есть ли где-то impl Clone for Struct, и всё
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Ты описываешь какое-то поведение автотрейтов сейчас
источник

p

polunin.ai in Rust — русскоговорящее сообществo
блять. Мне нужно для STRUCT реализовать трейт TRAIT<A> если A: CLONE где A - ТИП КОТОРЫЙ ПОДАЕТСЯ НА ВХОД МАКРОСУ
источник

p

polunin.ai in Rust — русскоговорящее сообществo
ладно забейте это я решу, пойду другие проблемы решать (хачу специализацию)
источник

Э

Эрик in Rust — русскоговорящее сообществo
polunin.ai
блять. Мне нужно для STRUCT реализовать трейт TRAIT<A> если A: CLONE где A - ТИП КОТОРЫЙ ПОДАЕТСЯ НА ВХОД МАКРОСУ
trait X<T> {}
impl<T, U> X<T> for U
where
T: Clone + seal::Sealed,
U: ?Sized,
{}

mod seal { /* … */ }


?
источник

IF

Ildar Fazullin in Rust — русскоговорящее сообществo
ребят, такой вопрос как можно реализовать проверку нагрузки на сайт, которая подписана SSL сертификатом?
источник

IF

Ildar Fazullin in Rust — русскоговорящее сообществo
получается необходимо фетчить сайт, SSL, и расшифровывать его уже в программе. я правильно понимаю?
источник