I can&#x27;t wait to see improved borrow checking! I&#x27;m not sure it&#x27;ll fix this specific case, but I often find myself needing to introduce a scope just to hint the borrow checker into doing the right thing. For example:<p><pre><code>    fn handle_message(&amp;mut self, find_node_query: messages::FindNodeQuery) {
        let origin = node::UdpNode::deserialize(find_node_query.get_origin());
        let target = Address::from_str(find_node_query.get_target());

        {
            &#x2F;&#x2F; Borrow self.routing_table first time
            let nodes: Vec&lt;&amp;Box&lt;node::Node&gt;&gt; = self.routing_table.nearest_to(&amp;target);
            let response = Message::Response(
                self.transaction_ids.generate(),
                Response::FindNode(&amp;self.self_node, nodes));
            origin.send(response.serialize());
        } &#x2F;&#x2F; Done borrowing self.routing_table here

        &#x2F;&#x2F; Borrow self.routing_table again
        self.routing_table.insert(origin);
    }
</code></pre>
edit: upon digging into the details, it looks like it may: <a href="https:&#x2F;&#x2F;github.com&#x2F;rust-lang&#x2F;rfcs&#x2F;blob&#x2F;db66dd2039b10b759084079827d85aba1c26256c&#x2F;active&#x2F;0000-seme-regions.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;rust-lang&#x2F;rfcs&#x2F;blob&#x2F;db66dd2039b10b7590840...</a>