ERC1155 and EIP2535 Diamonds
ERC1155 is a powerful and flexible token standard. Its functionality includes the following:
Batch transfer functions are part of the ERC1155 standard. This saves gas and is much more convenient for users who want to transfer multiple different tokens in the same transaction.
It is possible to implement fungible and non-fungible tokens in the same ERC1155 contract.
It is possible to implement multiple token collections within the same ERC1155 contract.
EIP2535 Diamonds and ERC1155 go very well together because ERC1155 let's developers implement multiple different token collections, both non-fungible and fungible, and EIP2535 Diamonds removes the 24.5kb contract size limitation so an unlimited amount of functionality can be implemented for the different ERC1155 token collections in the same diamond.
Note that the ERC1155 standard specifically mentions using EIP2535 for upgrades:
To alleviate the need to emit events when changing contract address, consider using the proxy pattern, such as described in EIP-2535. This will also have the added benefit of providing a stable contract address for users.
Of course tokens implemented with other standards such as ERC721 and ERC20 benefit from using EIP2535 Diamonds as well.
However ERC1155’s ability to create multiple token collections with different functionality can leverage EIP2535 to do that without a contract size limit.