There was already discussion about when is 'static required, when you transfer a reference rather than ownership to the thread. Compiler suggests why it might be harmful - if you place Arc on reference (which is chunk) it still does not transfer ownership over underlying data to thread:
17 | for chunk in self.sides.chunks((self.sides.len() + 3) / 4) {
| ^^^^^^^^^^-----------------------------------
| |
| borrowed value does not live long enough
| argument requires that `self.sides` is borrowed for `'static`
30 | }
| - `self.sides` dropped here while still borrowed
To make it working Arc should own the initial vec. Another issue in the code is access to mut result from multiple threads will lead to race condition - this either requires Mutex which is slow or calculate sum in every individual thread and return it as closure result, which can be obtained when joining threads back. See working example on playground