<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq" -->

---
title: Rust just introduced a new &quot;never&quot; type | daily.dev
description: Rust has finally stabilized the never type, an uninhabited type representing computations that never produce a value, written as an exclamation mark. Used for...
canonical: https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Rust just introduced a new &quot;never&quot; type | daily.dev
og:description: Rust has finally stabilized the never type, an uninhabited type representing computations that never produce a value, written as an exclamation mark. Used for...
og:url: https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq
og:image: https://api.daily.dev/og/posts/TWPAX32LQ.png
og:image:alt: Rust just introduced a new &quot;never&quot; type
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Rust just introduced a new "never" type

**[Let's Get Rusty](https://daily.dev/sources/letsgetrusty)** · 5 min read · 17 upvotes · 1 comments

## Summary

Rust has finally stabilized the never type, an uninhabited type representing computations that never produce a value, written as an exclamation mark. Used for unreachable code like break, infinite loops, and panics, it coerces to any other type, which makes it useful in generic code such as defining an error type that can never occur. The feature sat unfinished for about a decade because stabilizing it required updating the Infallible type to become a type alias for never, which broke existing code. The Rust team handled this with a staged rollout across editions, testing all public crates and helping maintainers fix breakage. Application-level Rust developers are largely unaffected, but library authors relying on Infallible should be aware of the change.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=wpqiH56ITZo>

## Questions this post answers

### What is the never type in Rust and what is it used for?

The never type, written as !, represents a computation that never produces a value and is built directly into the Rust language rather than the standard library. It is used for unreachable code such as return, infinite loops, break, and panics, and it coerces to any other type, which lets expressions like break satisfy a function expecting a concrete return type.

_Developers exploring Rust's type system track language changes like this one on daily.dev._

### Why did it take so long for Rust to stabilize the never type in user code?

The issue tracking user-writable never types was open since 2016, and stabilization took roughly a decade because the last edge cases were far harder than the common 90% of cases. Specifically, updating the Infallible enum to become a type alias for the never type broke existing code, forcing the Rust team to design a staged, breaking-change rollout.

_Rust maintainers weighing risky language changes can follow stabilization stories like this via daily.dev._

### How did the Rust team roll out the breaking change to the Infallible type without breaking the ecosystem?

Rust introduced the change in stages: first as a warning, then set to error by default starting December 2025, then implemented within a Rust edition where breaking changes are permitted, and finally applied across all editions. Before the final all-editions rollout, the team tested every publicly available Rust crate and worked directly with maintainers to fix breakage.

_Library maintainers navigating edition-based breaking changes can keep tabs on updates through daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@abdurrubbyeinstein** · 1 upvotes

> is it same as typescript's never?

## Similar posts on daily.dev

- [I stabilized never type](https://daily.dev/posts/i-stabilized-never-type-fvlyuvf4n) · Lobsters · 0 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust), [#language-design](https://daily.dev/tags/language-design)

[View this post on daily.dev](https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Rust just introduced a new \"never\" type","url":"https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq"},"datePublished":"2026-09-01T15:17:03.001Z","dateModified":"2026-09-01T15:17:24.390Z","description":"Rust has finally stabilized the never type, an uninhabited type representing computations that never produce a value, written as an exclamation mark. Used for...","image":"https://i.ytimg.com/vi/wpqiH56ITZo/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/wpqiH56ITZo/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Let's Get Rusty","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Let's Get Rusty","logo":"https://media.daily.dev/image/upload/s--iqd05ejH--/f_auto/v1725035314/logos/letsgetrusty","url":"https://daily.dev/sources/letsgetrusty"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":16},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"rust,language-design","timeRequired":"PT5M","video":{"@type":"VideoObject","name":"Rust just introduced a new \"never\" type","description":"Rust has finally stabilized the never type, an uninhabited type representing computations that never produce a value, written as an exclamation mark. Used for...","thumbnailUrl":"https://i.ytimg.com/vi/wpqiH56ITZo/sddefault.jpg","uploadDate":"2026-09-01T15:17:03.001Z","duration":"PT5M","url":"https://api.daily.dev/r/TWPAX32LQ","embedUrl":"https://www.youtube.com/embed/wpqiH56ITZo"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Let's Get Rusty","item":"https://daily.dev/sources/letsgetrusty"},{"@type":"ListItem","position":3,"name":"Rust just introduced a new \"never\" type"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq","comment":[{"@type":"Comment","text":"is it same as typescript’s never?","datePublished":"2026-09-03T10:54:36.932Z","url":"https://daily.dev/posts/TWPAX32LQ#c-UhMW5slXm","author":{"@type":"Person","name":"Abdur Rubby Einstein","url":"https://daily.dev/abdurrubbyeinstein","image":"https://lh3.googleusercontent.com/a/ACg8ocIsKSerfouwek8EIfyAeroapJQHQBoxjouEiVtlScuJBIQH2g=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/rust-just-introduced-a-new-never-type-twpax32lq#faq","mainEntity":[{"@type":"Question","name":"What is the never type in Rust and what is it used for?","acceptedAnswer":{"@type":"Answer","text":"The never type, written as !, represents a computation that never produces a value and is built directly into the Rust language rather than the standard library. It is used for unreachable code such as return, infinite loops, break, and panics, and it coerces to any other type, which lets expressions like break satisfy a function expecting a concrete return type. Developers exploring Rust's type system track language changes like this one on daily.dev."}},{"@type":"Question","name":"Why did it take so long for Rust to stabilize the never type in user code?","acceptedAnswer":{"@type":"Answer","text":"The issue tracking user-writable never types was open since 2016, and stabilization took roughly a decade because the last edge cases were far harder than the common 90% of cases. Specifically, updating the Infallible enum to become a type alias for the never type broke existing code, forcing the Rust team to design a staged, breaking-change rollout. Rust maintainers weighing risky language changes can follow stabilization stories like this via daily.dev."}},{"@type":"Question","name":"How did the Rust team roll out the breaking change to the Infallible type without breaking the ecosystem?","acceptedAnswer":{"@type":"Answer","text":"Rust introduced the change in stages: first as a warning, then set to error by default starting December 2025, then implemented within a Rust edition where breaking changes are permitted, and finally applied across all editions. Before the final all-editions rollout, the team tested every publicly available Rust crate and worked directly with maintainers to fix breakage. Library maintainers navigating edition-based breaking changes can keep tabs on updates through daily.dev."}}]}
```

