►
Description
How are Rust’s best-in-class error messages constructed? To figure that out, we’ll be digging through parts of rustc to uncover tidbits of this process. We’ll also take a high-level look at how some other programming languages construct error messages to compare and contrast these approaches.
More at https://rustfest.global/session/5-the-anatomy-of-error-messages-in-rust/
A
B
Oh
man,
those
are
great
all
right.
Welcome
everyone.
Welcome
to
my
talk,
titled,
the
anatomy
of
rust,
error
messages.
B
So
again,
I
know
they
gave
a
little
bit
of
a
recap
for
me,
but
just
to
kind
of
reiterate
a
little
a
little
bit
about
me.
I
teach
computer
science
for
my
day
job
over
zoom.
B
So
I
guess
I
do
this
kind
of
thing
a
lot
but
anyways
shameless
plug.
I
also
produce
a
podcast
called
the
humans
of
open
source.
Where
I
talk
to
people
who
work
in
open
source
software,
I
talk
to
a
lot
of
people
who
express
express,
especially
who
work
in
rust,
open
source.
B
So,
if
you're
interested
in
kind
of
hearing
any
of
those
discussions,
a
shameless
plug
for
my
podcast
and
then
the
last
piece
of
kind
of
relevant
information
here-
is
I
co-shepherd
the
rust
error
handling
working
group
where
we
basically
work
to
kind
of
lobby
and
advocate
for
improving
rust's
error
handling
ecosystem,
and
this
last
role
was
kind
of
what
helped
to
pro
pose
this
question
for
me
specifically
with
well
this
question
of,
like
you
know,
how
are
rust,
error
messages
so
helpful
right
for
me,
especially,
I
don't
think
I
would
have
stuck
with
rust
as
long
as
I
have
without
rust's
error
messages
being
as
kind
of
helpful
and
straightforward
and
unintimidating
as
they
are.
B
So
I
think
really
these
are
rust's.
Error
messages
are
one
of
the
I
suppose
one
of
its
killer
features,
even
though
sometimes
I
also
think
they're
a
little
bit.
That's
what
I'm
looking
for
they're,
just
not
given
as
much
credit
as
as
usual
or
they're,
just
not
in
the
limelight
as
much,
I
suppose,
and
if
I
had
to
go
ahead
and
kind
of
rank,
different
programming,
languages,
kind
of
on
a
tier
list
of
the
quality
of
their
error
messages.
B
I'd
probably
go
ahead,
and
do
it
something
like
this,
where
I
would
put
rust
in
s
tier-
and
I
think
kind
of
the
only
other
language
that
I
would
also
say
is
kind
of
in
the
same
class
would
be
elm
because
I
know
elm
also
the
community.
There
also
cares
a
lot
about
having
their
error
messages,
be
really
helpful
and
and
unintimidating
and
then
kind
of
everything
else
going
down
something
like
this.
By
the
way.
B
This
is
just
my
opinion,
and
I
will
also
say
one
thing
that
I
think
I've
gotten
a
lot
of
practice
with
teaching
over
zoom
every
day.
Is
I've
gotten
really
good
at
imagining
that
my
audience
always
laughs
at
my
jokes?
B
So
that
being
all
said,
the
norm
here
with
error
messages.
So
here's
an
example
of
like
a
c
plus
error
message,
but
kind
of
the
the
norm
with
error
messages
for
developers
for
programmers
is
like
there's
something
that
we
have
to
decipher
right
like
we
have
to
kind
of
figure
out
how
to
read
them.
I
think
a
lot
of
us
have
gotten
pretty
good
or
I've
gotten
a
lot
of
practice
with
running
this
kind
of
internal
algorithm
in
our
heads.
B
B
This
is
a
little
bit
of
a
of,
I
suppose,
an
egregious
example,
but
you
know
it's
not
just
c
plus
plus
you
see
this
in
lots
of
other
languages
as
well.
Like
here's,
a
python
example,
it's
you
know
it
doesn't
exactly
tell
you
straight
up
what
the
problem
is
right
again,
you
kind
of
have
to
look
at
this
and
try
to
figure
out
what
the
interpreter
is
telling
you
and
then,
of
course,
in
javascript.
B
I
just
want
to
bring
this
one
up
in
particular,
because
you
get
the
infamous
undefined
is
not
a
function,
error
message
that
is
so
unhelpful
right,
so
so
the
norm
with
a
lot
of
error
messages
and
a
lot
of
different
programming
language
ecosystems
is
just
like
they're.
They
leave
a
lot
to
be
desired
right
and
again
as
programmers.
We
have
to
kind
of
learn
to
decipher
them,
and
especially
for
me,
as
someone
who
teaches
neophyte
programmers,
you
know,
like
error.
B
Messages
are
very
intimidating
for
newcomers,
for
people
trying
to
get
into
programming
for
the
first
time,
and
especially
even
for
me,
I
can
remember
when
I
first
started
to
learn
programming,
which
was
in
javascript,
so
that
was
kind
of
like
my
first
language
that
I
really
tried
to
learn.
But
when
an
error
message
popped
up
like
I
was
just
so
intimidated
that
I
wouldn't
even
I
wouldn't
even
read
it
right.
B
I
was
just
kind
of
like
that
overwhelmed
by
every
time
I
saw
an
error
message
and
I'd
actually
just
go
and
like
poke
someone
who
I
thought,
knew
what
they
were
doing
and
asked
them
like.
Hey.
Can
you
like
decipher
this
for
me,
because
I'm
too
scared
to
read
it
all
this
to
say,
though
it's
not
like.
You
have
perfect
error
messages
in
rust,
right,
here's,
a
here's,
a
rust
example!
B
That's
also
a
little
bit
obtuse,
I
would
say,
also
leaves
something
to
be
desired,
so
obviously,
there's
still
work
to
be
done
in
the
rust
ecosystem,
around
rust
error
messages,
even
in
russia.
B
So,
but
that
being
said,
I
think,
most
of
the
time
you're
going
to
get
something
a
little
bit
more
seen
a
little
bit
more
straightforward,
hopefully
a
little
bit
less
intimidating,
where
you
know
you
where's,
very
straightforward
right
and
it
paints
a
lot
of
helpful
ascii
art
to
tell
you
hey.
This
is
the
offending
line.
This
is
the
location.
B
B
So
the
question
that
I
kind
of
wanted
to
pose
during
this
talk
is
this:
this
delta,
between
the
best
in
class,
error,
messages
and
kind
of
everyone
else,
I
suppose
is-
is
this
like?
Is
this
a
result
of
of
culture
within
those
ecosystems,
or
is
it
a
question
of
technology,
and
I
guess
what
I
mean
by
that
is:
is
there
just
some
crazy
kind
of
like
architecture
or
technology
or
algorithmic
trick
that
is
going
on
in
like
the
rust
compiler?
That
makes
these
error
messages
possible
or
makes
them
easier
to
be?
B
You
know
created
when
something
goes
wrong
in
the
compilation
process
inside
of
rust
c.
B
B
Like
is
this
a
question
of
technology
or
is
it
a
question
of
culture
so
to
start
off,
if
we
can
kind
of
distill
down
error
messages
into
kind
of
this
nice
standard
format
where
up
at
the
top
here,
you
can
see
is
what's
called
the
level
where
it
tells
you
is
this
an
error
or
it
could
be
a
warning
or
it
could
be
a
lint.
For
example,
you
have
the
error
code,
which
is
you
might
hear
it
called
like
the
error
index.
B
So
there's
like
this
nice
error
index
documentation
kind
of
classifying
the
error
by
this
index.
So
you
can
go
ahead
and
like
take
this
error
code,
if
rusty
gives
it
to
you,
it
doesn't
give
you
an
error
code
for
every
single
error
message,
but
for
the
ones
that
it
does
give
you.
You
can
go
ahead
and
take
that
and
basically
look
that
up
inside
of
the
error
index
to
get
some
more
context.
B
Some
more
information
on
this
type
of
error
that
you're
seeing.
Then,
of
course,
you
have
the
main
error
message:
the
location,
the
code
in
question,
all
the
nice
ascii
art,
that's
pointing
straight
at
the
code
in
question
and
then
notes
as
well
as
any
sub
diagnostics,
to
try
to
be
helpful
and
provide
you
with
a
little
bit
more
context
as
to
what
what
the
error
is
in
your
code.
B
So
there's
this
nice
kind
of
standard
format
and
kind
of
the
the
type
or
the
structure
that
deals
with
this
at
the
end
of
the
day
inside
of
rusty
itself.
Is
this
diagnostic
type,
and
so
again
we
can
see
there's
like
a
nice
kind
of
one-to-one
mapping
of
everything
we
just
saw
in
that
kind
of
standard
error
message
format.
B
So
the
way
error
messages
are
kind
of
surfaced
in
russ
c.
Well,
first
off
we
have
to
talk
a
little
bit
real,
quick
about
how
rusty
even
compiles
your
code
and
actually
runs
it.
So
there's
actually
multiple
phases
to
when
the
rust
compiler
is
running
your
code.
But
first
off
is
the
parsing
phase.
It
takes
your
source
code
and
needs
to
go
ahead
and
parse
that
into
some
internal
representation.
B
So
that's
called
the
parsing
phase
and
there
are
certain
types
of
errors
that
are
caught
within
the
parsing
phase,
so
we
can
go
ahead
and
look
at
an
example
like
this
just
trying
to
go
ahead
and
collect
some
numbers
into
a
vector
of
unsigned
32-bit
integers,
and
if
you
stare
at
this
code
hard
enough,
you
might
realize
oh
we're.
We
need
a
turbo
fish
or
basically,
we
didn't
correctly
write
the
the
turbo
fish
in
this
case.
B
So
when
we're
going
ahead
and
collecting-
and
we
use
a
turbo
fish
to
denote
what
kind
of
collection
we
want
to
collect
into,
we
would
use
a
turbo
fish
to
denote
that,
and
in
this
case
we
just
didn't
use
the
correct,
syntax
and
rust
c
tells
us
hey.
You
forgot
the
the
turbo
fish.
My
suggestion
is
to
go
ahead
and
add
those
right.
B
So
at
the
end
of
the
day,
inside
of
the
rust
compiler,
there
is
functionality
that
specifically
looks
for
this
case
and
determines
that,
if
this
is
the
case,
spits
out
this
error
message
and
determines
that
that
is
the
most
relevant
error
message
to
fix
the
code
that
you're
trying
to
run,
and
specifically
in
the
case
of
this
error
message
again,
it
happens
during
the
parsing
phase
and
if
we
were
to
kind
of
follow
that
trail
down
into
russia,
we
can
see
that
inside
of
this
function,
that
happens
again
during
parsing.
B
This
parse.suffix
function
down
here
we
can
see
this
function
here.
That's
called
check,
turbo
fish
missing
angle
brackets,
so
a
plus
naming
there
on
the
function-
and
here
is
the
actual
body
of
the
function
itself,
and
it's
basically
checking
it
basically
tries
to
what
it
tries
to
do
is
actually
it.
It
assumes
whatever
is
after
the
two
colons
of
the
collect.
B
It
actually
tries
to
parse
that
as
a
valid
statement,
and
if
it
sees
that
that
is
actually
a
correct
expression
or
an
expression
that
makes
sense,
then
it
will
go
ahead
and
surface
the
error
of
oh.
This
makes
sense
to
me
if
I
put
in
angle
brackets.
So
that's
what
the
problem
is.
You
didn't
put
angle
brackets
in
so
I'm
going
to
go
ahead
and
suggest
that
you
put
those
in
it.
Also.
B
This
function
also
will
specifically
check
for
a
extra
leading
angle
bracket,
but,
interestingly,
it
won't
check
for
if
you
have
an
extra
trailing
angle
bracket
that
actually
then
surfaces
a
different
error
message
altogether.
B
So
this
is
just
kind
of
like
one
example
of
a
type
of
error.
That's
surfaced
during
parsing
and
the
thing
with
when
you're
actually
going
ahead
and
parsing
there's
this
one
data
structure.
That
is
responsible
for
the
entire
parsing
phase,
which
is
called
the
parse
session
here,
and
so
we
can
see
kind
of
up
here
at
this
type
at
the
top
of
this
type
here
the
span
diagnostic
is
what
is
kind
of
responsible
for
holding
on
to
all
of
the
different
error,
messages
or
diagnostics.
B
I
should
say
that
crop
up
during
the
parsing
session,
specifically
other
sorts
of
error
messages
that
can
crop
up,
so
I
or
I
should
say
different
phases
of
the
compilation
process
where
of
course,
other
errors,
other
sorts
of
error
messages
can
crop
up
right.
Of
course,
you
have
one
example
here
that
we'll
look
at
immutability
right,
so
there's
a
separate
phase
after
parsing
when
rusty
is
running
through
your
code,
that
specifically
checks
for
mutability.
B
So
this
actually
happens
during
the
phase
where
rusty
is
kind
of
like
validating
the
borrow
checker
rules,
I'm
not
really
sure
why
it
makes
sense
that
mutability
is
checked
when
it's
checking
the
borrow
checking
rules,
but
that's
how
it
works.
So
with
something
like
this.
B
We
go
ahead
and
initialize
a
string
and
then
we
go
ahead
and
try
to
insert
or
basically
mutate
that
string,
but
we
forgot
to,
of
course
denote
that
the
string
is
supposed
to
be
mutable.
So
we
forgot
the
mute
keyword
here.
So
then,
in
this
case,
that's
exactly
what
rust
c
tells
us.
So
again.
B
There
is,
of
course,
a
function
inside
of
rust
c
that
specifically
handles
this,
this
error
class
and
we
can
find
that
function
here
called
report,
mutability
error
and
again
this
happens
during
the
borrow
checking
phase,
and
I
definitely
could
not
take
a
screenshot
of
the
entirety
of
this
function.
It
was
something
like
434
lines
of
code,
so
it
was
pretty
big
but
of
course,
during
the
borrowed
checking
phase
as
well.
B
It
also
checks
for
lifetimes
and
wants
to
ensure
that
you
know
you
don't
have
dangling
references
and
all
that
good
stuff
that
the
borrowed
checker
is
is,
of
course
famous
for,
and
so
an
example
like
this
we're
going
ahead
and
trying
to
push
a
couple
of
references
to
some
vector
but
doing
that
inside
of
a
closure
where
we
go
ahead
and
create
those
references
and
then
pushing
those
references
to
this
vector
outside
of
our
closure.
B
That's
going
to
go
ahead
and
yell
at
us
for
saying:
hey
these
references,
don't
live
long
enough
because
they
get
dropped
at
the
end
of
this
closure
and
then
this
particular
class
of
error
then
is
handled
by
this
function
again
with
a
plus
naming
called
report.
Borrowed
value
does
not
live
long
enough,
and
so
these
two
errors
that
we
just
looked
at
again.
B
There
happened
during
the
borrower
checking
phase
which,
at
the
end
of
the
day,
is
kind
of
governed
by
this
borrowed
checker
context,
struct,
which
again
is
pretty
big,
but
we
can
see
down
here
this
errors
buffer,
where
it's
basically
holding
on
to
all
of
the
diagnostics
that
are
created
during
this
particular
phase,
so
to
step
back
a
little
bit
and
try
to
make
sense
of
all
of
these
different
errors
or
different
ways
in
which
diagnostics
are
surfaced.
B
When
I
was
doing
research
for
this
talk,
one
thing
that
kind
of
kept
one
word
that
kept
kind
of
cropping
up
into
my
head.
While
I
was
looking
through
all
the
stuff
and
then
having
fun
digging
through
russia,
but
the
thing
that
again
cropped
up
in
my
mind.
The
word
that
I
would
kind
of
attribute
all
this
to
is
eagerness.
B
And
so
what
I
mean
by
that
is
well
both.
We
can
look
at
this
both
in
kind
of
the
programming
context,
as
well
as
the
more
general
context
of
what
eagerness
means
right.
So
if
we
think
of
eagerness
in
just
a
programming
context
right,
that's
kind
of
like
the
opposite
of
laziness,
which
is
to
say
every
chance
we
get
to
go
ahead
and
do
a
thing.
We're
gonna.
B
Do
it
versus
laziness
beyond
the
opposite
end
of
the
spectrum,
where
we're
only
going
to
do
a
thing
at
the
last
minute
when
we
can
no
longer
get
away
with
not
doing
it
anymore
right.
So,
in
the
programming
context,
eagerness
is
kind
of
showcased
when
diagnostics
are
constructed
in
russia
because
it
turns
out
every
time
something
could
go
wrong,
as
in
some
kind
of
diagnostic
can
be
created
to
address
some
error.
That's
happening
in
the
compilation
process.
Rusty
will
go
ahead
and
do
it,
and
actually
one
of
the
methods
on
the
diagnostic
class.
B
Is
this
cancel
method?
And
so
what's
actually
going
on?
Is
it's
basically
any
chance?
It
gets
to
start
creating
a
diagnostic
because
it
thinks
something
might
be
going
wrong
during
the
compilation
process,
it'll
go
ahead
and
do
it
and
then,
at
the
end
of
the
day,
right
rusty
only
wants
to
surface
the
relevant
errors.
B
It
speaks
to
again
the
question
that
we
had
coming
into
this
talk,
which
was
was
this
culture
or
technology?
This
to
me
really
speaks
about
culture
right
rusty
and
the
the
developers
who
worked
on
rusty
right
they're,
all
in
that
way,
eager
to
help
you
they're,
eager
to
provide
helpful
context
provided
hopeful
errors
to
make
your
job
your
workflow
as
a
developer,
easier
right
like
if
you're,
if
you
have
to
spend
less
time
thinking
about
deciphering
error
messages,
that's
more
time
that
you
can
be
productive
on
what
you're.
B
B
I
think
technology
takes
a
little
bit
of
a
back
seat
because
really,
I
think,
at
the
end
of
the
day,
even
though
all
this
stuff
that
we
saw
when
we
were
just
going
through
all
of
these
code.
Examples
like
it
is,
it
is
cool
and
it's
it's
probably
ingenious
in
a
sense,
but
at
the
end
of
the
day,
I
don't
think
it
is
more
complex
or
more
crazy
or
more
ingenious
than
anything
else
inside
of
russia
at
the
end
of
the
day.
B
B
And
it's
been
really
interesting
as
well,
seeing
some
other
research
specifically
around
kind
of
like
culture
and
error
messages,
and
how
the
two
kind
of
have
this
feedback
loop.
So
one
thing
I
actually
found
interesting
was
a
research
paper
done
in
2011
by
some
researchers
who
looked
at
racket,
so
they
actually
well.
I
should
say
they:
they
did
a
bunch
of
research
on
students
looking
into
what
is
how
helpful
better
error
messages
are
basically
and
again
the
takeaway
there.
B
No
surprise
really,
but
you
know
better
error
messages
led
to
a
better
learning
experience
and
a
smoother
learning
curve
for
students,
new
students
getting
into
programming
in
this
case-
and
so
you
know
this
was
done
in
2011,
but
I
think
really,
the
takeaway
of
this
particular
research
was
well.
You
know
it's,
it's
not
a
question
of
technology.
The
technology
is
all
there
to
actually
make
it
happen.
Really.
I
I
think
it
is
just
a
question
of
increasing
the
priority
of
or
or
you
know,
yeah
basically
making
error
messages.
B
A
higher
priority
in
your
language
ecosystem,
at
the
end
of
the
day
and
and
rust
early
on
definitely
made
that
a
priority
and
made
that
a
very
as
a
very
conscious
choice
on
the
part
of
the
early
rust
core
developers
to
go
ahead
and
look
at
some
other
languages.
B
Here's
a
blog
post
that
the
creator
of
elm,
again
kind
of
the
other
programming
language
that
I
would
consider
to
have
s-t
or
error
messages,
so
evan
wrote
a
very
thorough
and
and
useful
blog
post,
specifically
on
the
same
thing
but
kind
of
again
in
a
rough
in
elm
context,
and
the
thing
that
I
found
really
interesting
from
this
particular
blog
post
is
that
he
says
I
recently
took
a
couple
of
weeks
to
really
focus
on
this,
this
being
improving
the
error
messages
in
in
elm,
and
so
you
know
he
took
a
couple
of
weeks,
which
is
to
say
like
it
like
yeah.
B
It
is
a
time
investment,
but
it
wasn't
like
an
exorbitant
time
investment
and
you
know
really
sat
down
and
deliberately
thought
about.
How
can
we
make
error
messages
in
elm?
B
You
know
really
really
good,
really
helpful
if
you've
never
seen
an
error
message
before
it
is
in
format
pretty
similar,
I
would
say
to
to
rust
error
messages.
They
have
ascii
art
in
there
as
well,
and
they
color
code.
B
The
error
messages
again
to
just
really
make
it
as
straightforward
and
unintimidating
as
possible,
really
right
and
that's
at
the
end
of
the
day,
doing
that
really
helps
new
people
trying
to
get
into
your
language,
but
at
the
same
time
it's
also,
I
would
say,
really
useful
for
even
seasoned
developers
working
in
your
language
right,
because
again
it
just
like
lowers
that
overhead.
B
It's
you
know
super
great
makes
for
a
much
better
workflow.
I
think
some
other
languages
I'll
also
quickly
mention
like
swift
and
also
typescript.
These
languages
are
doing
some
interesting
things
as
well.
They're,
I
would
say,
taking
a
slightly
different
approach,
but
that's
mostly
because
swift
and
typescript
both
have
really
nice
integrations
with
ides.
So
you
know
swift,
with
xcode
and
typescript
with
vs
code,
there's
some
really
cool
ide
stuff
that
they
can
do
there.
So
that's
kind
of
another,
really
nice
and
streamlined
way
to
surface
error
messages.
B
So
I
think
I
think
I've
ranked
these
in
in
the
a
tier
in
my
in
my
tier
list-
and
I
think
you
know
these
two
languages
in
particular
are
doing.
B
I
would
say
they
also
have
kind
of
embraced
this-
this
notion
of
improving
the
culture
around
error
messages
and
are
doing
some
cool
things
there
as
well.
But,
ultimately
you
know,
I
think
it
would
be
super
great,
as
this
culture
of
just
trying
to
be
more
helpful
to
developers
trying
to
be
more
helpful
to
new
learners
of
a
programming
language
as
that
culture
kind
of
like
makes
its
way
into
other
language
ecosystems
as
well.
B
Hopefully,
eventually
we'll
get
to
a
point
where
we
have
something
that
looks
more
like
this
and
overall,
at
the
end
of
the
day.
I
think
that
would
be
super
great
for
everybody
and
yeah.
That's
my
talk.
I
hope
you
found
that
insightful
and
just
some
references
as
well
in
case
so
like
the
paper
that
I
talked
about,
is
here
as
well
as
evan's
blog
post
that
I
mentioned
as
well
as
the
rusty
dev
guide
up
at
the
top.
B
C
Great,
thank
you.
Sean
yeah,
quick
question.
Is
there
anything
you
would
change
about?
Rust's
diagnostics,
interface
diagnostics,
like
with
capital
b.
B
B
I
know
they've
had
some
pretty
cool
ideas
such
as
like,
if
hey,
if
we
had
better
integrations
into
some
kind
of
ide,
then
we'd
be
able
to
do
some
of
the
things
that
swift
and
type
typescript
are
also
doing
so
that
would
be
really
cool.
I
don't
know
if
rust
analyzer
is
working
on
some
of
that
stuff,
but
that
would
be
great
but
yeah.
B
It's
been
interesting
as
well,
seeing
if
you
actually
go
back
and
look
at
some
of
the
earlier
pull
requests
for
how
to
kind
of
improve
rust's
error
messages
so
like
I'm
just
I
was
thinking
of
some
names
and
I
totally
blanking
but
anyways.
Sorry
yeah,
like
there
have
been
some
pretty
interesting
ideas
that
people
contributors
to
rust
have
kind
of
thought
of
before
for
how
to
go
ahead
and
improve
error,
handling
or
air
handling
and
rusty,
specifically
like
yeah,
I
can.
B
I
can
name
any
off
the
top
of
my
head
right
now,
but
there's
been
some
really
interesting
ideas
there.
Some
of
them,
I
think,
didn't
actually
end
up
gaining
traction.
Unfortunately,
but
but
yeah.
C
What
about
any
missing
error
messages
you'd
like
to
see
either
russia
or
clippy
or
or
maybe
uplifted
from
clippy
to
rusty,
like,
for
example,
the
recent
c
stream
pointer
lint.
B
Yeah,
that's
that's
a
little
bit,
that's
a
little
hard
for
me
to
say
to
be
honest,
especially
the
point
about
clippy,
because
even
though
I
think
it
would
be
interesting
to
kind
of
like
fold
clippy
into
rust
c.
At
the
same
time,
I
do
also
know
there's
this
very
deliberate
there's
a
very
deliberate
thing
where
you
know
a
lot
of
where
the
philosophy
of
rust
is
just
like.
We
want
most
things
to
be
in
libraries
and
not
folded
directly
into
the
standard
library
or
folded
into
the
compiler
itself,
so
yeah.
B
C
Do
you
feel
that
the
design
decisions
of
rust
with
respect
to
error
locality
helps
the
messages
compared
to,
for
example,
another
language
like
typescript.
C
To
say
on
that
and
last
question
one
second:
I
had
it
around
here
somewhere.
C
If
there
were
one
area
of
improvement
when
it
comes
to
compiler
diagnostics
and
rust,
what
would
that
be.
B
As
far
as
compiler
diagnostics,
I
think
again,
I
feel
like
those
are
mostly
in
a
pretty
good
place,
and
I
say
that
because
I
know
there
are
there's
concerted
effort
that
continually
goes
into
working
on
those,
I
think,
maybe
where
it
would
be
a
better
or
more
helpful,
would
actually
be
to
devote
more
time
and
attention
to
error
messages
in
libraries
and
so
actually,
some
of
the
stuff
that
that
we
do
on
the
the
the
rust
error.
B
Handling
working
group
is
kind
of
more
targeting
that
specifically
like
disseminating
this
culture
of
improving
error
messages
to
to
outside
rusty.
Because
again,
I
think,
even
though
this
was
a
really
cool
kind
of
spelunking
tour
for
the
most
part,
I
think
I
don't
worry
too
much
about
the
state
of
air
handling
in
rusty
itself.
I
think
you
know
again
people
really
care
about
that
in
the
core
team,
and
so
I
think,
that's
probably
as
good
a
spot
as
it's
going
to
get.
C
Cool
all
right,
then,
thank
you
so
much
for
your
talk
and
your
answers.
It's
really
interesting,
so
yeah.
B
Yeah,
thank
you
so
much
and
yeah
thanks
so
much
to
everyone
who
put
on
this
wonderful
conference
and
giving
me
the
opportunity
to
give
this
talk.
It's
great.