На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (7) « Первая ... 5 6 [7]  все  ( Перейти к последнему сообщению )  
> Rust vs Чистейший Си , и еще си шарп вдогоночку
    Цитата OpenGL @
    нужно запрещать использовать старый объект

    Не не не ... в доках чуть иначе. Переменная владеет значением. Или передавай владение или делай референс. Из референсов только один может быть мутебельным. Если передаешь - старая переменная (не объект, не значение) становится невалидной. А значением (объектом) владеет уже другая переменная.

    Добавлено
    Цитата OpenGL @
    Зачем? Ну вот есть поля, которые используются только когда объект находится в определённом состоянии и инициализируются когда объект в него входит. В конструкторе я их проинициализирую, конечно, и вовсе не факт, что из полей старого объекта.

    Твое решение в Расте?
      Это мне не противоречит.

      Добавлено
      Цитата JoeUser @
      Твое решение в Расте?

      Забью :D Это несущественная мелочь же.
        Цитата OpenGL @
        Это мне не противоречит.

        Возможно. Но мне малеха режет слух. Я уже привык, читая доки, разделять понятия. Переменные - это "контейнеры", содержимое - это значения (целые, плавающие, структуры, твои объекты, ссылки ...). Только один "контейнер" (все же лучше переменная) - владеет одним "значением". Но я еще в процессе чтива хэндбука.

        Кстати, запостив статью выше, я обнаружил альтернативу директиве "impl" - типа "dyn". Есть чо по-мелочи рассказать? А если найду? :lol:

        Добавлено
        Цитата OpenGL @
        Забью :D Это несущественная мелочь же.

        Так не пойдет! :'(
        Давай пример, дай посмотреть - подумать.
          Цитата JoeUser @
          Цитата D_KEY @
          В раст по умолчанию это для переменных так работает, поля структурок он же по значению хранит?

          Не так! Все зависит от типа, и какой из типажей он имеет - Copy или Drop.

          От типа чего? Поля или объекта? Покажи пример.

          Цитата
          И до С++11 обуздать прожорливость SFINAE было непросто, в С++11 пришла радость в виде std::enable_if

          enable_if уже очень давно был в boost. Если не хотелось буста, самому тоже можно было накидать.
          Сообщение отредактировано: D_KEY -
            Цитата D_KEY @
            От типа чего? Поля или объекта? Покажи пример.

            Ну я же уже выше специально приводил два куска кода :-?
            И про типы все расписал :-?
            Немножко ознакомься с базовыми понятиями Раста и станет все понятно.
            Если оооочень коротко - типажи (trasits) отвечают за ПОВЕДЕНИЕ типа, для которого они определены. Для "базовых" и коротких типов, выше я перечислял, поведение Copy определено по-умолчанию. Ну вот ведут они себя так! А для структур определено другое поведение Drop, там нужно вызывать деструктор после передачи. И передаваемая переменная, после передачи своего значения (содержимого) становится невалидной. Ай!!! :wall: Читай выше, я там все написал, дублировать не буду.
            Скрытый текст
            M
            OpenGL, мастер!  :lol:
            Приглядывай тут за мной, а то я тут такую могу пургу нанести со своим недообученным багажом по Расту!
            Но я стараюсь дискуссировать пока в рамках прочитанного и на левую ногу осознанного.
              Цитата JoeUser @
              Я уже привык, читая доки, разделять понятия.

              Да не в разделении тут дело. Я говорю, как оно на низком уровне работает и как уживается с высоким. Т.е. это просто дополнение.

              Цитата JoeUser @
              Кстати, запостив статью выше, я обнаружил альтернативу директиве "impl" - типа "dyn".

              В смысле? fn foo() -> impl Trait vs fn foo() -> &dyn Trait? Так это разные штуки. dyn был введён потому, что, читая код и видя Box<Foo>, ты не знаешь, чем это Foo является - трейтом или структурой. dyn же явно говорит, что ожидается динамическая диспетчеризация, т.е. это трейт.

              Цитата JoeUser @
              Давай пример, дай посмотреть - подумать.

              Зачем? Я вроде бы всё максимально чётко расписал, т.е. пример будет такой же, но кодом. А придумывать более-менее реальный пример мне лениво :)
                Цитата OpenGL @
                А придумывать более-менее реальный пример мне лениво

                Ни разу тебя ни о чем не просил!!! А вот ту - прошу! :P
                Не подумай ничего такого, мне учится надо срочно, и врага знать фэйс-ту-фэйс!
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0500 ]   [ 16 queries used ]   [ Generated: 29.03.24, 05:47 GMT ]