Alex Ozun .ical Alex is a software engineer with a decade of experience in mobile applications development. For the last 5 years he’s been developing American Express iOS app. Your company: American Express Your job title: Senior iOS Engineer Session 04-1812:1040minTypestate - the new Design Pattern in Swift 5.9Alex OzunThis talk will teach the audience 3 ideas:Typestate Design Pattern, popular in Rust, and now available in Swift 5.9.Swift 5.9's new Noncopyable types and consuming functions.The power of generic constraints.Typestate Design Pattern:Understand how Typestate brings the concept of a State Machine into the type system, catching serious logic mistakes at compile time.Explore its application in mission-critical systems, with a real-world example of a Tesla car, highlighting its importance in safety-critical scenarios, .Swift 5.9's New Noncopyable Types:Discover Swift 5.9's strict memory ownership model and the Noncopyable types.Understand how consuming functions prevent the reuse of state variables, ensuring compiler-enforced state transitionsThe Power of Generic Constraints:Learn how generic constraints allow us to enforce state-specific operations at the type level, eliminating the need for runtime guard checks.Practical examples:Coin-operated turnstile: Walk through the step-by-step implementation of a Turnstile using the Typestate pattern in Swift.Playing Video games on a Tesla Car: Explore the example of how a Tesla car can use the real steering wheel and pedals to either control the physical car or a video game car, depending on its state. Highlighting the safety guarantees that Typestate provides in high-stakes scenarios.Conclusion and Takeaways:Go through the checklist to evaluate how the Typestate Design Pattern fits into your projects, especially if you deal with state machines, require a strict order of operations, or need to manage resources.Recap how Typestate helps prevent serious errors without relying heavily on traditional quality control measures such as tests, linters, code review, etc.Auditorium