<div class="chatlog__message-group">
  <div id="chatlog__message-container-1229243593236025396" class="chatlog__message-container" data-message-id="1229243593236025396">
    <div class="chatlog__message">
      <div class="chatlog__message-aside"><img class="chatlog__avatar" src="https://cdn.discordapp.com/avatars/189711109966659584/95280765d1be73ce985dce15ea3585f6.png?size=512" alt="Avatar" loading="lazy"></div>
      <div class="chatlog__message-primary">
        <div class="chatlog__header"><span class="chatlog__author" style="color:rgb(237,171,161)" title="omochimetaru" data-user-id="189711109966659584">omochimetaru</span> <a href="/channels/306995750418513920?category=main&amp;channel=swift-2&amp;message_id=1229243593236025396"><span class="chatlog__timestamp" title="Monday, April 15, 2024 1:35 AM"></span></a><a href="#chatlog__message-container-1229243593236025396">4/15/2024 1:35 AM</a></div>
        <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">過去のこれ、誤りに気がついた <a href="https://discord.com/channels/291054398077927425/306995750418513920/1153874527114231809" onclick="scrollToMessage(event, '1153874527114231809')">https://discord.com/channels/291054398077927425/306995750418513920/1153874527114231809</a>
            <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">public extension Database { func transaction&lt;T&gt;(_ closure: @Sendable @escaping (Database) async throws -&gt; T) async throws -&gt; T { try await self.transaction { db -&gt; EventLoopFuture&lt;T&gt; in let promise = self.eventLoop.makePromise(of: T.self) promise.completeWithTask{ try await closure(db) } return promise.futureResult }.get() }</code> この <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">closure</code> から <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">@Sendable</code> は外せない。 理由は、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">closure</code> が <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">EventLoopFuture</code> の中で実行されている間に、 この executor は <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">await</code> しているだけでブロックはされていないから。 例えば <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">closure</code> が <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Actor</code> の中にあった場合、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Actor</code> のメソッド自体は interleave するから、同じisolationからこの <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">closure</code> を呼び出される可能性があって、 EventLoop threadとの並行実行になりうる。</span></div>
      </div>
    </div>
  </div>
</div>