# Introduce Arc\<dyn Trait\> in Enum which impl PartialEq

**URL:** <https://users.rust-lang.org/t/introduce-arc-dyn-trait-in-enum-which-impl-partialeq/102649>\
**Category:** help\
**Created:** [November 16, 2023, 12:53pm UTC](https://users.rust-lang.org/t/introduce-arc-dyn-trait-in-enum-which-impl-partialeq/102649 "2023-11-16T12:53:24Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![2e71828](https://avatars.discourse-cdn.com/v4/letter/2/3e96dc/32.png) [@2e71828](https://users.rust-lang.org/u/2e71828)\
**Post date:** [November 16, 2023, 3:18pm UTC](https://users.rust-lang.org/t/introduce-arc-dyn-trait-in-enum-which-impl-partialeq/102649/7 "2023-11-16T15:18:10Z")

</div>

> [@Cerber-Ursi](#):
>
> ```rust
> ^^^^^^^^ assignment requires that `'a` must outlive `'static`
> 
> ```
> 
> Just _where_ is that assignment they are talking about?!

I'm not sure where the assignment is, but the `'static` requirement is coming from the implicit lifetime in `dyn MyTrait`. This change [fixes the problem](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=f9b88b71c8e51a1e78c66bb8351fda27):

```diff
-impl PartialEq for dyn MyTrait {
+impl PartialEq for dyn MyTrait + '_ {

```

* * *

_Edit:_ At least, it does for references. [The `Box` version is still broken](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=7d1a0fafce950d3ee23f711e53d03bf4):

```rust
error[E0507]: cannot move out of `*__arg1_0` which is behind a shared reference
  --> src/main.rs:22:30
   |
22 | * __self_0 == *__ arg1_0,
   | ^^^^^^^^^ move occurs because `*__arg1_0` has type `Box<dyn MyTrait>`, which does not implement the `Copy` trait

```

(and similarly for `Arc`)

---

_[View the full topic](https://users.rust-lang.org/t/introduce-arc-dyn-trait-in-enum-which-impl-partialeq/102649)._
