►
From YouTube: Async-Await WG: Niko + Taylor discuss region inferencer
Description
cramertj and nikomatsakis discuss changes to the region inferencer to try and overcome some of the limitations from https://github.com/rust-lang/rust/issues/56238. In the process, we uncover some strangeness.
Paper doc:
https://paper.dropbox.com/doc/Multiple-Unrelated-Lifetimes-in-Existential-Types--AbbZKR~LigYmDVvXErd4OO0~Ag-AuCQq4Ewy39j8Hnj3n9Qg
B
So
basically
I'm
just
talking
the
existing
in
terms
of
how
this
works
for
types
and
and
I'm
trying
to
like
relate
it
to
how
it
should
work
for
lifetimes.
So
in
particular,
there's
this
rule.
That's
a
little
bit
tricky,
which
is
that
defining
uses
of
existential
types
must
leave
all
of
their.
A
A
B
So
the
thing
I
was
trying
to
write
down
that
I
was
just
getting
to.
Is
that
I
think
that
this
is
murder
actually
four
lifetimes,
because
lifetimes
also
have
subtyping?
Yes
and
I
was
just
trying
to
figure
out
like
what
things
we
like
actually
can
and
can't
allow
particular.
It
seems
like
if
you
have.
B
Typeset,
that's
gonna
fall
apart.
Great
cuz,
like
in
an
async
I've,
had
me
know
that
this
is
the
only
use
like
NSYNC
FN
use,
like
must
be
a
defining
use,
and
it
doesn't
make
sense
like
it
doesn't
even
make
sense
to
talk
about
unused
type
parameters
in
that
case
right,
because
the
type
typewriters
that
are
in
the
single
type
exactly
correspond
to
those
that
are
on
the
function.
B
A
A
Think
that
the
the
way
I
was
thinking
about
this,
we
explain
how
our
state
and
think
it'll
come
to
some
topics.
I
mean
one
thing
is
to
back
up
the
thing
about
not
allow
the
pattern.
Unification
constraint,
the
key
point
there
is
that
we've
basically
refused
to
guess
right
like
and
I
think
that's
the
thing
we
have
to
preserve,
but.
B
A
Right
that
makes
sense
man
we
might
want
to
do
some
more
aggressive
for
cases.
I
think
that
would
apply
also
to
infiltrate
generally
any
case
where
we
know
there's
one
defining
use
but
yeah
it
would
prefer
I,
guess
I
think
we
should
think
about
where
the
guessing
is
and
see.
If
we
with
not
doing
it,
I.
A
A
A
A
B
A
Yeah
problem
here
is
that,
like
one
problem,
we
have
for
our
current
solver.
The
way
it
works
is
that
it
tries
to
sort
of
start
small
and
grow
bigger,
but
there's
no
there's
kind
of
no
constraint
on
to
zero
in
to
go
and
in
well
they're
only
this
loud
lives.
There's
nothing
worked
to
zero.
There's
something
else
right
that
kind
of
comes
because
of
this
constraint.
A
A
B
A
A
A
B
A
B
B
Here's
sort
of
that,
like
the
concrete
type
beliefs
and
technically,
we
allow
it
to
leap
within
the
module.
So
clearly
it
would
like
you
would
determine
whether
or
not
things
in
the
module
could
compile,
because
they
would
like
it
would
be
able
to
have
visibility
into
that
different
distinction.
Right.
A
A
B
So
that
would
that
would
affect
infiltrate
right
and
it
would
affect
existential
type,
but
it
won't
affect
a
sink,
because
we
know
that
stupid
things
like
that,
hopefully
don't
exist.
B
A
B
Part
of
the
type,
but
also
in
this
case
you
don't
have
to
do
like
you're
not
having
to
this
inference.
I
guess
because
we
know
we
know
exactly
what
the
parameters
are
being
like.
Parameters
are
being
applied
to
the
closure.
Right
is
my
point
like,
like
it's
sort
of
special
that
there's
like
a
unique
exact
choice
of
all
of
the
parameters.
B
A
B
A
A
B
A
A
A
B
A
A
A
A
B
B
B
A
A
Yeah,
it
still
has
a
sergeants
way
it
just
it
picks
them
in
yeah.
What
would
I
guess
what
were
changes
that
you
might
not
have
included
this
plus
decay
at
all
anyway?
That's
another
problem,
I
agree
that
that,
like
there
might
there's
probably
somewhere
out
situation
here
but
trying
to
think
even
with.
B
A
A
Yeah
sometimes
they're
making
choices
some
arbitrarily
that
are
equivalent
to
the
choice
that
would
be
forced
to
make
here
the
only
complication
here
the
additives
would
have
to
do.
It
fact
that
this
one
type
variable
in
this
case
also
in
the
ASIC
effect
we
at
least
know
it
both
set
of
constraints,
apply
to
the
given
title
since
they're
from
the
people
you
don't
know
about
the
is
send
explain
obviously,
but
we
know
about
from
the
define
the
definer
was
a
single
definer
and
it
defines
anything
instead
of
constraints
to
which
we
defined
yes,.
B
A
A
B
A
B
B
A
Because
there's
probably
I
think
it's
possible
to
have
interactions
where,
like
there's
some
variable,
that's
local,
to
one
function,
but
you
have
to
prove
let's
say
that
X
there's
two
type
variables
one
is
the
Titan
one
is
X
X
some
function,
but
you
have
to
prove
that
the
hidden
titanite
school
of
X,
you
say
I
mean.
Then
you
can't
there's
sort
of
a
and
in
fact,
or
put
another
way
digression
about
under.
Why
did
principal
you.
B
A
A
Yeah,
that's
funny.
This
is
the
same
example.
What
I'm
thinking
so
right
so
now
the
question
is
like:
if,
for
some
reason
you
I
don't
know
you
could
even
have
it
be
like
this,
but
this
would
sort
of
care
age
that
wouldn't
work,
don't
have
to
be
a
case
where
you
really
don't
know
what
H
is
that
you
want
to
prove
something
funny.
A
B
A
Sure,
and
now
this
would
I
mean
I,
think
you're
thinking
about
it
correctly,
there's
just
different
ways
to
implement
that,
but
one
of
the
ways
might
be
to
mix
all
the
context
together.
The
other
might
be
to
do
something
smart
into
this.
Just
the
parts
we've
proven
you
discharged
parts
behind
into
reduce
until
they
understand
like
what
you
learned
and
this
binding
it's
just
the
main.
A
Basically,
what
it
really
is,
this
these
functions
can
inject
additional
module
level
verticals.
Alright,
that's
okay,
I
think
it's
not
anything
we
couldn't
possibly
in
the
other
day,
it
would
require
us
to
get
any
case
I
personally.
A
A
B
B
A
A
A
B
A
See
as
you're
trying
to
find
the
biggest
thing
will
reverse
the
concept,
obviously,
but
so,
if
you
ask
for
what
is
the
biggest
thing
of
a
and
B
here,
we
get
X
or
what
is
the
upper
bound,
which
makes
sense.
A
A
A
B
A
A
Yeah
I
mean
I'm
kind
of
debating
about
I,
but
I
had
planned
to
say
when
we
came
in
and
ice.
That's
probably
just
probably
still
a
good
idea.
I
mean
conservative.
If
you
said
kick
only
try
to
only
pick
whether
it's
really
only
one
choice,
but
it
seems
like
we're
already
kind
of
spot
right
in
a
world
where
we
make
some
arbitrary
choices.
A
B
I
feel
like
I,
don't
make
an
accident
here
that
will
cause
the
language
to
be
unsound.
I
might
cause
something
to
not
compile
that
we
might
have
liked
to
have
compiled,
but
I
think
that's
like
the
worst
outcome,
right,
I
guess.
The
worst
outcome
is
that
we
choose
an
unreasonable
algorithm
and
then
realize
a
rainbow
and
later,
and
we
can't
go
to
the
reefs
one
because
it
breaks
someone's
viscous.
A
B
A
A
A
A
I
think
we
realize
I
think
that
we
actually
not
sure.
How
does
this
revealing
to
go?
Looking
occurs
to
me
that
the
the
leaking
about
whether
something
is
an
arbitrator,
I
guess
we
must
reveal
the
title,
don't
look,
how
that's
actually
act,
but
presumably
at
that
point
we
know
oh
well,
today
is
whatever
this
lifetime
is,
so
we
wind
up
getting
the
right
constraint,
yep.
B
A
Was
going
to
give
the
way
I
had
thought
to
plan
I
would
indeed
and
although
but
only
handle
the
only
thing
is
this
probably.
You
can
certainly
look
at
the
constraints
on
tick
zero
and
you
can
say:
I
have
to
be
less
than
today.
Only
one
of
my
things
or
it
took
a
has
to
outlive
me,
and
only
one
of
my
things
just
to
get
I
live
with
only
one
of
these
choices
and
therefore
I
can
change
this
to
an
equality.
A
A
A
A
A
A
A
A
A
A
B
A
A
Doesn't
seem
to
me
the
way
that
the
software
basically
works
rather
in
iterative
phase,
where
it's
trying
to
each
time
it
has
an
outlives
relation,
the
bigger
one,
bigger
big
enough
to
be
bigger
than
the
smaller
one
and
keep
straight
down
until
they're
all
solved,
but
I,
don't
know,
doesn't
seem
any
value
like
letting
that
brand
like
it's
not
giving
us
any
information
available.
If
you
just.