172 похожих чатов

Привет, знаете ли вы ответ на следующий вопрос? Есть важная структура,

объявленная в одном крейте, но дополнительный функционал ей я добавляю в другом при помощи трейта(просто impl раст запрещает). — ну там сложный код с уймой зависимостей, который на том уровне не нужен. Так вот есть ли возможность указать приватность поля такую, что бы оно было приватным для прямого изменения, но могло бы быть изменено методами трейта: статическим и динамическим? Я только по-питоновски смог.

Off topic: Но вообще с этими приватными методами часто бывают проблемы, когда хочется добавить функционала, а не можешь, например, без наследования, и питоновский способ часто хорош.

6 ответов

9 просмотров

По идее, ты можешь поле сделать приватным, а геттер-сеттер вынести в еще один экстешн-трейт (но он уже будет объявлен рядом с типом). И потом заюзать этот экстеншн-трейт при реализации того главного.

Звучит как нехороший подход)

Anton-Trionprog Автор вопроса
Anton-Trionprog Автор вопроса
Αλεχ Zhukovsky
Звучит как нехороший подход)

а разве открывать для любого опасное поле, изменение которого разрушает целостность структуры, это нормально? =) При это мне надо, что бы в других крейтах можно было по-разному настроить структуру. Вот нужен как бы профи-левел, и им и является трейт, который мне предложил Миха Багишов. Припоминаю, я уже так некогда делал — трейт, который давал доступ к полям для тестирования.

Anton Trionprog
а разве открывать для любого опасное поле, изменен...

> Припоминаю, я уже так некогда делал — трейт, который давал доступ к полям для тестирования. Да я прекрасно знаю о чем речь - в дотнете есть атрибут InternalsVisibleTo который как раз это делает. Каждый раз когда вижу его использование вижу что кто-то просто таким образом закостылил Закрытое поле - норм, а вот "закрытое но если очень хочется то открытое" - не оч

Anton-Trionprog Автор вопроса
Αλεχ Zhukovsky
> Припоминаю, я уже так некогда делал — трейт, кот...

ну знаешь, это из области friend class и подобного. Но смотри: сама структура у меня в клейте common, она там толком тупо данные + пара методов. А вот уже другие крейты знают, как с ней работать. Одни крейты(X) её могут создавать, но другие не могут(Y), при этом создаётся она фабриками, которые юзают дофига типов и инфраструктуры того крейта(X) вообще. А другие(Y) её умеют читать и использовать, создавать не умеют и инфраструктуры крейта X не имеют т.к. X это вообще сервер. Так что пихать всё в один крейт как раз не красиво. Наоборот полагаю, что должно быть подобно лючку для техосмотра в реальной жизни. Домохозяка открыть его не может, а электрик откроет, прозвонит тестером, заменит что-то.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта