Prepare the bread and butter: Preheat oven to 350°F (175°C). Lightly butter a rectangular baking dish (approximately 9x13 inches). Spread the bread triangles out on a baking sheet and toast in the oven for 5-7 minutes, until golden brown. Set aside.
Make the chocolate mixture: In a heatproof bowl set over a pan of simmering water (don't let the bowl touch the water), melt the chocolate with the whipping cream and rum (if using). Stir in the sugar, butter, and cinnamon until everything is smooth and combined. Remove from heat.
Whisk the eggs: In a separate bowl, whisk the eggs until frothy. Slowly pour the warm chocolate mixture into the eggs, whisking constantly to temper them and prevent curdling.
Assemble the pudding: Spread a thin layer of the chocolate mixture in the bottom of the prepared baking dish. Arrange half of the toasted bread triangles in a single layer on top, overlapping slightly. Pour half of the remaining chocolate mixture over the bread. Repeat with the remaining bread and chocolate mixture, ending with a final layer of chocolate. Gently press down on the bread to soak up the liquid.
Bake and chill: Cover the dish with foil and bake for 30-35 minutes, until the pudding is set around the edges but still slightly wobbly in the center. Remove from the oven and let cool completely at room temperature. Cover and refrigerate for at least 24 hours, or up to 3 days, for the flavors to develop.
Serve and enjoy: When ready to serve, preheat oven to 300°F (150°C). Remove the pudding from the refrigerator and uncover it. Bake for 15-20 minutes, until warmed through. Let cool slightly before serving. Top with whipped cream, flaked almonds, and chocolate shavings (optional).