Це помилка. Що було виправлено за допомогою https://github.com/rakudo/rakudo/commit/f70d95e299 .
Причина, з якої вона діяла інакше, Rat
ніж для будь-якого іншого типу, полягає в тому, що Rat
справа була оптимізована таким чином, що не потрібно робити жодного примусу, і, таким чином, не потрібно перевіряти результат примусу. У цьому випадку значення було поставлено безпосередньо в новий Duration
об’єкт. Однак це було зроблено без дезактивації, тому Duration
об’єкт насправді буде посилатися на змінну $x
з вашого прикладу. Це взагалі добре, але .gist
логіка якось створила нескінченний цикл, який намагався створити уявлення про те, Duration
через це самонаправлення. Потрібно визнати, я не дуже заглянув, де саме потрапив у цикл.
У будь-якому випадку, переконуючись, що значення стає деконцентризованим всередині Duration
об'єкта, проблема відходить, тому що вона вже не може самостійно посилатися.