►
From YouTube: Rust and Tell Berlin - May 2020
Description
Rust & Tell Berlin, the monthly event to share ideas, and learn about new things in and about Rust, went fully online for the first time.
https://berline.rs/2020/05/26/rust-and-tell.html
#1: 00:07:00 - Interactions with a Diving Computer by Florian Gilcher
#2: 00:33:25 - Rust in the Browser? by Maximilian Ehlers
#3: 00:57:51 - Embedding Rust in NodeJS Applications by Kiffin Gish
#4: 01:28:49 - GitUI by Stephan Dilly
A
A
Here
we
go
I
hope
everyone
can
see
my
screen,
okay,
so
welcome
to
the
third
on
line
rust
and
tell
we
usually
hold
this
meetup
in
person
at
some
random
startup
co-working
space
in
Berlin.
But
since
the
pandemic
we
moved
to
assume
this
has
the
advantage
that
we
have
a
few
more
speakers
which
can't
be
in
Berlin.
I
think
this
is
quite
nice
and
also
people
can
watch
shows
all
over
the
internet
and
right
now
also
by
a
live
stream
on
YouTube.
A
My
name
is
passing
Gruber
I'm
a
rust
developer
for
the
past
year,
working
on
exchanges,
finance
institutions
in
rust,
and
my
co-host
is
Ryan
Levesque.
He
has
bad
internet
connections
or
not
sure.
If
he's
on
the
meter
right
now,
but
Ryan
is
yeah
a
huge
rust
advocate
at
Microsoft.
You
can
find
him
at
Ryan,
Levesque
Ryan
underscore
Levesque
on
Twitter.
So
if
you
have
any
rust
related
to
question
feel
free
to
get
in
touch
with
him,
so
the
meetup
is
all
about
sharing.
A
Our
struggles
with
the
language
is
not
so
new
anymore,
but
the
idea
of
the
meetup
is
to
show
behind
the
developer
or
the
software
engineer
or
dam
or
other
product.
It
always
helps
to
not
judge
and
not
to
just
see
a
polished,
github
project
with
five
thousand
five
thousand
stars.
It
helps
to
see
developer
struggle.
It
helps
to
blow
some
steam
off
at
the
meter,
complain
about
the
language,
but
all
have
a
friendly
get-together
once
a
month
to
share
our
experiences
with
the
language.
A
So,
and
this
being
said,
it's
we
welcome
every
super
beginner
and
like
into
the
language,
even
if
you
haven't
program
too
much
rust,
yet
it
can
be
two
lines
feel
free
to
talk
about
it
and
your
experiences
and
how
you
moved
from
a
different
language
to
rest.
And
what
do
you
think
about
it
now,
even
if
we
are
online,
we
follow
the
Berlin
code
of
contact.
A
So
please
you
can
have
have
a
look
at
Berlin
code
of
conduct.
Org,
if
you
find
anything
which
is
not
to
your
liking,
feel
free
to
contact
us
privately.
You
can
send
us
a
meet-up
message
if
you
yeah,
if
like,
if
something
bad
is
happening,
please
let
us
know
and
we
will
take
care
of
it.
Since
we
are
online,
we
have
a
bit
of
a
different
set
up
for
the
rest
until
meetup
we
are
using,
am
soon
and
assume
chat.
A
So,
if
you
have
any
questions
to
the
speaker,
you
can
type
it
during
the
talk
and
I
will
go
over
the
questions
in
the
chats
and
I'm
asked
the
speaker
in
the
end
of
his
talk
or
her
talk
about
the
air
talk
or
we
will
have
soon
breakout
rooms.
Today
we
have
four
talks,
four
speakers,
so
I
guess
we
will
have
a
breakout
room
after
the
second
talk.
A
We
will
have
a
5-10
minute
chat,
maybe
15
minutes
chat,
and
then
we
will
go
on
to
them
to
the
last
two
speakers
we
had
in
the
past
that
people
have
wanted
more
time
in
their
breakout
rooms.
It's
kind
of
hard,
since
everyone
is
on
their
own
schedule,
so
please
feel
free
to
create
your
own
swim
rooms
or
matrix
Jets
at
the
end
of
the
Meetup
and
then
hang
out
and
chat
there.
This
meetup
is
also
streamed
live
on
YouTube.
A
So
if
you
have
any
questions
or
if
you
show
your
face
during
the
talks,
be
aware
that
it
will
be
live
streamed
and
since
we
are
not
just
in
Berlin
for
wherever
you're
currently
sitting,
we
warned
you
and
if
we
say
you,
we
really
mean
you.
This
meetup
just
exists,
because
every
month
we
can
present
three
or
four
speakers.
So
the
hard
work
is
just
on
you
and
not
on
us.
We
just
provide
the
setup
and
you
do
the
talk.
So
we
are
happy
to
help
you
out
in
the
shape
of
your
talk.
A
If
you
have
any
questions,
if
you
have
any
concerns,
if
you
never
talked,
if
you
want
to
talk
more
just
meet
up
is
a
perfect
environment.
It's
free
people
can
drop
in
and
out
there.
No
expectations
so
feel
free
to
make
this
your
first
meetup,
where
you
give
a
presentation
and
the
talk
and
warm
thank
you
to
young
Eric
he
is
providing
the
set
up,
is
handling
all
the
technicalities.
We
wouldn't
have
been
able
to
pull
this
up
so
quickly
in
such
in
a
professional
way.
So
thank
you
with
brings
us
to
our
four
speakers.
A
A
A
Okay,
thank
you
for
attending
this
meetup
I
hope
you
will
have
a
great
one
and
a
half
hours
or
two
hours
time
feel
free
to
ask
any
questions
during
the
talk
feel
free
to
text
me
or
Ryan.
Privately.
If
we
can
answer
any
questions
also
feel
free.
B
You
Bastian
always
happy
to
be
here:
I'm,
not
sharing
my
screen
just
yet.
I
just
wanted
to
show
you
quickly
what
we're
talking
about.
This
is
a
diving
computer.
It's
quite
sizable
and
it
goes
on
your
wrist,
and
this
is
the
data
cable
you
use
for
it,
which
I'm
going
to
address
in
a
second,
so
that
you
know
how
much
of
a
experience
this
cable
is,
and
so
that's
good
doesn't
remember
my
settings.
So
let's
get
started
so
change.
B
The
title
of
this
talk
a
little
using
rest
to
talk
to
and
about
my
diving
computer,
because
when
I
pitched
this
talk
to
you
Ryan,
it
was
like,
what's
that
so,
like
I
need
a
little
bit
to
explain
what
this
thing
does.
I'm,
throwing
geisha
I
run
a
company
called
furnace
systems
which
is
world's
largest
most
consultancy,
and
we
do
run
our
own
conference.
B
The
oxidized
conf,
which
is
focused
on
rust
on
embedded
and
their
CFP
for
this
conference,
is
currently
open
for
the
next
edition.
The
next
edition
is
going
to
be
online
and
it's
going
to
be
in
July,
but
not
to
bore
you
with
that.
What
is
this
thing
that
I
showed
you?
What
is
a
dive
computer
and
that
computers
are
actually
even
currently
most
crucial
security
equipment
that
you
can
have?
What
I
think
what
it
does?
B
It
constantly
tracks
your
death
and
your
calculated
absorption
of
nitrogen,
because
if
you
put
the
human
body
under
pressure,
it
will
start
absorbing
nitrogen
and
nitrogen.
This
nitrogen
in
the
body
is
actually
the
cause
of
driver
sickness,
because
if
you
depressurize
your
body
too
quickly,
it
will
start
to
form
air
bubbles
again,
and
you
don't
really
want
that.
Oh
generic
just
noticed,
but
I
should
share
my
slides.
C
B
B
So
you
better
hope
you
two
tracks
that
using
a
mathematical
model
just
calculating
your
current
death
and
your
your
probable
absorption
of
nitrogen
and
also
tracks
the
release
of
nitrogen
doing
surface
times.
So,
if
you
dive
multiple
times
after
each
other,
it
also
tracks
how
much
of
that
nitrogen
has
naturally
released
while
you've
been
at
the
surface,
so
that
your
second
dive
actually
tracks
where
the
tracks,
your
current
body
state,
and
so
it
calculates
the
die
at
the
time
you
can
spend
it
death
and
it
checks
for
a
safe
essence
speed.
B
B
So
before
that,
you
would
actually
use
these
kinds
of
tables
where
you
would
go,
for
example,
on
the
top
left.
You
see,
you
stir
it
and
you
go
to
a
depth
of
like
70
feet
and
then
there's
there's
a
time
that
you
can
that
you
can
spend
at
that
depth,
for
example.
So
previously
you
had
to
use
a
pretty
pretty
pessimistic
model.
So,
for
example,
you
would
say:
okay,
we're
diving
to
25
meters,
so
let's
say
we're
taking
like
30
and
we're
assuming
that
we're
spending
five
minutes
at
30
meters,
or
something
like
that.
B
B
This
is
the
manual
of
my
life
computer.
These
are
the
security
notification
notices
throughout
the
manual
and
they
come
in
three
categories:
red
deadly
or
orange
likely
deadly
and
yellow
can
have
grave
harm,
and
then
it
starts
with
one
page
of
these
are
all
the
warnings
that
might
lead
to
death
which
are
not,
and
all
that
bad,
it's
just
being
underwater
being
pressurized
and
being
and
breathing.
Her
is
a
a
thing
that
you
should
take
care
about,
and
so
a
diving
computer
is
still
still
uses.
B
In
retrospect,
this
is
one
of
my
later
dives,
where
we
actually
went
down
to
the
30
meters,
and
what
you
can
see
here
is
that
we
stayed
smooth
on
the
profile
of
the
sea
and
then
slowly
went
up
and
you
can
see
at
like
848
something
like
that.
We
started
making
a
stop
in
the
middle
to
depressurize
right.
B
So
this
is
what
you
use.
A
dive
computer
for
general,
so
in
the
operational
mode
of
those
computers
is
also
very
very
interesting.
So,
on
the
surface,
a
dive
computer
is
always
in
waiting
mode
and
it
provides
you
a
simple
configuration
interface.
So
it
can
change
a
couple
of
things.
For
example,
some
divers
use
different
gas
mixtures,
especially
with
last
night
nitrogen.
B
So
this
is
interesting
for
that
calculation
and
it
gives
you
some
time
and
warning
settings
so,
for
example,
it
can
set
a
warning
for
I,
don't
want
to
go
below
15
meters
and
then
the
computer
will
go
off
at
that
moment.
It's
not
actually
beeping
because
sound
travels,
quite
nice
underwater.
It
does
not
allow
you
to
switch
off
any
kind
of
safety
features.
B
It
is
again
really
really
conservative,
for
example,
after
a
dive
it
you
cannot
switch
it
off
for
24
hours
and
the
only
thing
at
this
place
is
you're
not
allowed
to
fly
in
that
time.
Why
same
thing
you
put
yourself
on
a
pressure,
and
you
should
make
sure
that
all
the
nitrogen
can
release
and
one
one
of
the
most
common
ways
to
actually
get
divers
sickness
is
diving
and
then
get
going
on
a
plane,
because
a
plane
is
very,
very
depressurized.
B
That's
a
pretty
pretty
common
cause
of
accidents,
much
more
common
than
actually
having
accidents
on
the
water,
and
this
cannot
cannot
solutely
not
be
switched
off.
So
the
operation
of
the
whole
thing
is
pretty
pretty
automatic
yeah
and
provides
me
with
all
the
dye
of
history
that
you
had
and,
for
example,
it
marks
all
the
dykes
were
referring
something
you
send
it
more
quickly
than
that
I've
computer
recommended
to
you
and
the
dive
model
recommended
you,
which
can
be
useful
for
later
on.
Just
for
checking,
usually
it's
for
checking.
B
Oh
hey
I
did
something
wrong
on
this
day.
I
wish
the
next
time
and
at
death
a
dive
computer
switches
itself
on
exactly
the
moment.
It
touches
water,
so
the
whole
process
is
automatic
and
then
it
ticks
and
my
logs
every
five
seconds
or
something
like
that,
and
then
it
tracks
the
death,
the
temperature,
the
remaining
time
where,
theoretically,
you
could
go,
you
could
send
without
any
kind
of
decompression,
because
you
don't
have
enough
nitrogen
in
your
body
at
all
yeah,
not
enough
nitrogen
in
your
body
absorbed.
Yet
this
is
called
zero
time.
B
It
will
calculate
the
mole
of
nitrogen
absorption
and
presents
you
with
the
remaining
time
that
you
have
at
the
career
depth
and
the
essent
decent
speed
that
you
currently
have,
because
underwater
is
pretty
hard
to
actually
track
where
you
are
and
how
high,
though
you
are,
except
when
you
have
four
below
you
so
having
a
computer
check,
that
is
pretty
pretty
interesting
yeah
and
it
has
a
separate
stop
mode
at
the
moment.
You
should
actually
start
stopping
and
we'll
say.
Okay,
please
remain
at
this
death.
Here's
a
countdown
for
you
three
minutes
something
like
that.
B
It's
pretty
interesting!
So
here's
a
data
sample
that
you
could
get
out
get
off
of
this
in
there's
a
common
XML
format.
That
is,
it's
always
curse,
but
really
easy
readable.
So
what
it
tracks
is
actually
quite
simple:
it
just
tracks
the
temperature,
the
depth
it
actually
locks
with
each
of
these.
What.
B
Which
kind
of
device
has
produced
this
data
sample
and
the
most
important
time
part
for
the
dive
computer
to
operate?
Is
this
decode
time
that
means
at
this
def
I
can
still
spend.
This
is
a
28
meter.
I
can
still
still
spend
1020
seconds
before
I
have
to
to
decompress
on
the
way
out.
So
interfacing
with
the
deaf
computer
is
also
very
conservative.
It's
purely
for
reading
live
computers
or
security
equipment,
they're
not
intended
to
be
messed
with
it.
B
You
need
to
buy
a
cable
for
it,
and
this
cable
cost
six
euros
first,
the
euro
computer
and
then
at
some
point
you
figure
out
that
it
that
one
of
your
biggest
connection
problems
is
that
it
actually
doesn't
connect
properly
and
you
need
to
wiggle
it
around,
which
is
really
really
annoying.
B
If
you
want
to
debug
something,
because
you
pretty
often
lose
connection
because
the
cable
is
properly
there
and
then
trying
to
figure
out
what
the
dive
computer
actually
supposes
and
the
problem
is,
that's
rarely
documented,
and
but
there
is
a
library
called
the
dive
computer,
which
I've
been
using
as
a
reference
which
is
a
sea
library
which
is
actually
pretty
good,
a
pretty
structured
and
gave
me
the
hint
and
implements
like
two
hundred
devices
or
something
like
that.
That's
machine
one
and
live
data
computer
is
pretty
interesting.
B
It
has
a
natural
layering
on
the
hardware
type,
but
you
actually
have
so
this
device
is
built
by
an
vendor
called
a
column.
That's
the
maker,
but
the
hardware
type
is
actually
Oceanic,
which
a
number
of
other
vendors
use
and
the
exact
memory
layout
type
that
I'm
going
to
find
here,
and
that
works
mostly
like
all
this
works,
mostly
by
listing
how
big
is
a
memory
page
on
this
computer?
How
can
this
memory
on
this
computer
be
addressed?
Is
it
a
USB
computer,
or
does
it
use
serial
for
contact
this
one?
B
B
So
how
do
I
read
a
page
from
this
specific
model
of
computer
and
then
put
those
in
the
V
table
and
use
an
abstract
interface
to
interface,
with
that
connecting
to
the
computer
is
pretty
simple:
it's
a
little
bit
verbose,
but
there's
a
serial
port
library
in
in
rust
that
you
can
use,
and
you
just
sort
of
all
your
serial
ports
of
your
computer.
The
only
thing
that
you
need
to
know
is
the
so-called
V
ID,
which
is
the
vendor
ID
and
the
PID
off
your
USB
device.
B
So
and
if
you
want
to
send
a
message
to
it,
the
first
message
to
send
is
to
take
that
computer
handle.
Then
you
open
this
port
using
the
serial
port
library,
and
the
only
thing
is
you
Center.
It
is
0
X,
a
4
and
0.
So
all
of
those
messages
end
in
0.
You
do
port
right
to
it
and
it
will
respond
with
its
name.
B
B
Machine
than
just
its
name-
and
it's
pretty
interesting
to
see
how
the
memory
model
works,
what
it
gives
you
it
gives
you
direct
memory,
access
to
actually
everything
that's
on
this
device
or
that's
in
D
in
the
memory.
That's
intended
to
be
read
by
me,
and
this
is
actually
pages
numbered
from
1
to
512
and.
B
Correct
and
the
and
each
of
these
has
special
data
in
it,
the
most
interesting
one
being
the
page
64,
which
has
the
dive
page
pointers
I
go
to
what
the
die
page
point
is
around
a
second,
that's
a
typo
there.
So
the
memory
layout
of
this
device
is
extremely
simple.
It
has
a
block
for
all
device
info,
so
everything
current
settings
and
whatever
it
has
this
one
page
of
vocation,
pointers
and
where
do
those
location?
For
this
point,
there's
two
ring
buffers.
B
One
is
full
of
logbook
and
one
is
for
the
Dave
profile
and
that's
a
different
thing.
The
logbook
holds
data
like
this
person
has
dived
for
10
minutes.
Maximum
death,
25
meters
at
9:30
came
back
up
and
maybe
a
flag
descent
was
too
far
too
fast
or
not.
That's
that's
what
we
call
a
logbook
and
then
there's
the
dive
profile
and
the
dive
profile
is
the
thing
that
gives
you
all
those
small
data
points
that
actually
collect
this
I'm
only
going
to
care
about
the
logbook
ring
buffer
I'm.
B
B
It
gives
you
information
if
there's
high
memory
in
the
computer,
so
for
everyone,
because
computers
in
the
90s
in
the
early
90s,
these
small
things,
still
have
high
memory,
and
it
gives
you
the
location
of
the
CF
pointers
page
where
all
these
pointers
are
and
those
pointers
pointers
one
page
that
is
somewhere
in
this
logbook
in
this
log
book
written
buffer
or
some
of
these
pointers.
These
pointers
point
to
everything
in
this
memory.
B
B
These
will
be
at
pretty
much
the
same
location,
because
then
you
go
around
the
ring
and
if
you
want
to
read
a
page,
live
dive
computer,
for
example,
does
it
so
what
you
need
to
send
is
you
need
to
send
0
xb1,
just
that's
the
command.
For
with
me
a
page,
the
page
number
as
a
you,
16,
16
pointers
and
then
0
and
in
C.
You
would
actually
do
that
by
just
creating
an
in-memory
array
and
doing
a
little
bit
of
bit
shifting
this
looks
very
unlucky
in
rust.
B
B
I
had
a
couple
of
interesting
experiences
with
this
code
base,
but
while
holding
the
a
base
and
I
found
that
I
found,
the
lib
dive
computer
code
base
very
easy
to
read
and
Vevey
idiomatic
and
easy
to
follow,
but
the
structure
was
definitely
not
something
that
I
was
used
to
as
a
West
programmer,
especially
in
the
sense
that
it
included
far
more
things
as
pointers,
while
rust
heavily
relies
on
having
special
datatypes
abstracted
as
values,
for
example
the
cursor
type
to
to
implement
the
same
kind
of
functionality.
So
there's
a
huge
difference
in
algorithm.
B
Abstraction
were
in
Alberta
growth
and
implementations,
for
example,
through
using
this
cursor
type.
Rust
have
any
favours
indexing
and
si
favors
pointer
calculations,
so
my
Rusco
base
is
much
index
heavier
than
than
the
speaker
base
and
I
found
it
quite
interesting
that
this
Co
base
was
much
more
on
the
side
of
using
dynamic
dispatch
on
the
sea
side.
Well,
rust
favours
using
generics
and
ending
up
with
non
dynamic
dispatch.
B
A
lot
of
places
I
also
found
a
number
of
interesting
problems,
while
porting
the
library
and
the
dive
computer
goes
back
to
2005
and
has
a
number
of
optimizations.
So,
for
example,
I
find
it
very
very
hard
to
find
out
how
would
they
actually
read
the
log
books
until
I
figure
that
that
they
actually
read
the
backwards
and
for
my
first
implementation,
I
would
have
just
read
them
forwards.
B
The
reason
why
they're
reading
it
backwards
is
because
this
is
used
in
in
applications
that
read
from
these
slow
devices
and
reading
backwards
means
you
will
pretty
quickly
find
out
if
there
is
a
dive
that
you
have
already
sent
with,
and
then
you
can
just
stop
the
operation.
So
all
the
iteration
works
backwards
in
time,
but
that's
really
unintuitive.
If
you
actually
just
want
to
find
out
how
the
device
works
and
want
to
make
it
build
a
bug.
The
bug
free
implementation
first
and
the.
B
So
they
and
the
library
itself
is
very
vast,
so,
for
example,
just
for
this
make
of
computer,
they
support
three
different
kinds
of
page
models,
so
different
kinds
of
page
sizes
arrangements
and
whatever
I'm
pretty
often,
if
that's
just
a
single,
just
a
small
difference
with
with
huge
if-else
conditions
like
if
this
is
a
computer
of
that
kind.
Do
it
like
this?
If
it's
a
computer
of
that
can't
do
it
like
that?
I
have
a
couple
takeaways
from
this
experience.
B
Life
computers
really
are
stupid
in
the
implementation
if
they
kiss
applied
very
thoroughly
and
focus
on
the
right
parts.
But
some
of
what
I
found
awesome
was
the
users
documentation
of
the
whole
thing
that
even
documents
that
if
this
number
only
has
two
digits,
if
it's
99
it
might
be
higher
and
that's
okay,
lingo
is
still
the
hardest
thing
that
you
need
to
learn
before
porting.
B
So,
for
example,
knowing
what
a
log
book,
what
the
log
book
actually
means
and
what
that
room
is
in
the
diverse
term
was
what
I
learned
by
doing
this
or
what
a
log
entry
is.
A
good
code
base
is
cool
to
read
upon,
but
it's
a
mediocre
architectural
reference.
You
can
it's
basically
archaeology,
trying
to
figure
out
what
kind
of
architecture
this
secret
base
is
targeted
to
and
I'm
not
talking
about
machine
architecture,
but
actually
the
memory
architecture
of
this
device.
B
The
whole
thing
would
have
been
much
easier
if
there
was
just
the
data
sheet
available
that
I
could
implement
off,
and
the
page
based
model
is
actually
at
least
alert
on
on
a
computer
that
maybe
has
literally
has
pages
from
0
to
512,
and
you
can
start
moving
through
these
and
yeah
them.
Also,
if
you
had
a
look
at
the
name
of
my
life
computer
that
it
reports,
whoever
at
this
vendor
had
the
idea
that
null
byte
Lullaby,
it
is
an
appropriate
separator.
B
B
It
has
support
for
hundreds
of
computer
models
and
I
just
have
existed,
testing
them
and
I
don't
want
to
have
that
access,
but
having
a
look
at
it,
the
iterative
model
is
very
easy
to
interface
with
using
rust
and
then
I
make
the
dynamic
dispatch
model
that
it
uses
is
very
easy
to
interface
with
using
rust
and
yeah.
I
got
my
fun
out
of
that
part,
and
so
I'm
going
to
scrap
this
codebase.
B
That's
also
why
you
can't
find
it
online
and
next
up
I
actually
want
to
write
a
binding
to
the
blog
computer
and
then
have
a
look
at
how
these
calculation
algorithms
actually
work
like
how
how
much
is
the
projected
net
and
that
you
can
saturation
that
you
had
like
after
five
minutes
of
this,
divert
something
like
that.
I,
don't
know
how
to
check
this,
but
just
for
fun
and
understanding
how
this
works
and,
as
my
final
conclusion,
it's
quite
nice
to
actually
understand
how
the
thing
works.
A
B
B
Would
not
call
it
diving,
but
basically
any
lake
around
the
Lynn
has
dive
site
and
they
go
down
to
up
to
10
meters,
but
they
say
is
a
very
good
type
server
1210
salat,
which
I
can
highly
recommend
which
regularly
drive
out
of
town
and
and
can
help
you
with
that.
Yeah
also
forgot
to
mention
generic
who
is
running.
The
meetup
here
is
my
dining
buddy,
whom
I
learned
diving
with.
So
if
anyone
wants
to
go
raw
station,
diving,
please
let
us
know.
A
E
I,
don't
know
if
you
see
this
weird
bubble
here
from
zoom,
but
I'm
just
gonna
start
all
right
rest
in
the
browser
and
a
few
years
ago
this
would
probably
be
the
headline
if
I
can
get
it
to
work.
No,
you
mad
bro
it's
in
there
because
it
was
really
tough
to
get
rest
working
in
the
browser,
but
I
was
keen
on
trying
it
again
because
I
had
to
use
case.
So
Who
am
I.
E
I've
been
a
web
developer
for
around
seven
years
now,
working
a
few
company
is
the
lot
of
JavaScript
I
go
by
BNF
on
the
internet.
You
can
see
my
website
right
there.
It's
Alaska,
Berlin,
yeah
and
I
got
them
to
rest
a
few
years
back
when
there
was
a
soul.
Go
over
this
rust
thing
for
Lou
Levitz,
going
on,
because
I
found
it
intriguing
to
get
the
power
of
C
without
all
the
headache
on
this
pointer,
magic.
E
E
I
have
a
lot
of
stuff
at
home
photos
some
movies,
music
books,
documents,
papers,
YouTube,
stuff
and
I
have
friends
and
family
around
the
world
that
I
want
to
share
this
with
at
the
same
time,
I
have
calendars,
have
love
meetings
that
I
want
to
coordinate
with
people,
and
I
would
like
to
not
use
Google,
Apple,
etc
for
storing
them
to
not
have
them,
parse
them
for
advertising
or
whatever,
basically
because
yeah
I
can
so.
E
This
is
the
setup.
Alright
I
have
my
network
attached
storage
here
in
my
home,
I
have
a
laptop
and
in
phone
that
are
in
Germany
and
then
at
the
other
side
of
the
world
having
a
girlfriend
where
as
a
phone
and
a
laptop
in
Singapore,
and
she
also
wants
to
access
the
same
a
movie.
So
my
photos,
you
can
see
this
red
line
here
there.
The
idea
is
to
connect
them
somehow
to
get
her
into
my
home
in
an
easy
way.
Are
there
multiple
ways
to
do
this?
E
Why
a
guard
is
the
one
that
I
chose
so
if
you've
not
heard
about
why
I
got
before
this
VPN
technology,
so
you
could
see
a
fast
motor
and
secure
VPN
tunnel.
I
got
really
fascinated
by
it
because
of
rants
inside
the
kernel.
It's
only
three
to
four
thousand
lines
of
code.
It's
way
way
smaller
than
alternatives
such
as
Open
VPN,
it's
very
opinionated,
and
it's
very
fast.
It's
just!
It's
really
really
nice
go
check
it
out.
It
has
rust.
E
Userspace
implementation
as
well
loads
of
apps
for
other
devices
can
highly
recommend
it
and
Jason
Dolan.
For
the
guy
who
wrote
it
is
he's
really
nice
yeah.
So
how
do
you
use
wire
guard
right?
If
you
want
to
connect
all
your
devices,
each
of
these
devices
needs
a
key
pair,
so
you
need
to
generate
key
pairs
on
the
command
line.
Then,
if
you
have
a
server
right,
everything
runs
through
a
single
server
and
my
setup.
E
You
can
have
multiple
servers,
but
you
need
some
place
where
these
devices
can
go
to
and
ask
ok
how
do
I
get
to
the
other
device,
and
this
server
needs
to
be
updated
with
the
keys
so
that
it
can
coordinate
the
communication
between
all
the
devices.
So
every
time
you
want
to
add
a
device,
you
need
to
update
it
on
the
server.
If
you
want
to
remove
a
device,
you
need
to
know
its
public
key,
then
you
need
to
go
to
the
server
and
remove
the
public
key
yeah.
C
E
All
it's
quite
difficult
if
you
don't
have
tooling,
so
how
do
I
want
it
I
want
it
to
be
easy
to
add
new
devices
without
copy
and
pasting
keys
around
I
want
to
immediately
have
to
device
active
if
I
add
it
to
the
network
and
I
want
to
easily
maintain
the
network
right.
If
I
do,
if
I
remove
a
device,
I
want
it
to
be
offline
immediately,
I
don't
want
to
SSH
into
my
server
go
and
look
at
some
notes
on
how
to
do
it
properly.
E
E
This
is
how
it
looks
like
alright,
there's
documentation
can
check
out
the
guitar,
but
I
basically
have
a
server
which
I
called
the
bot.
I
find
a
pretty
cool
a
robot
in
the
cloud
and
I
can
go
here
and
you
can
add
a
new
laptop
laptop
all
right.
Let's
give
it
an
IP
and
select
the
network,
it's
running,
Linux,
save
that
it's
up
here.
I
can
click
downloads,
alright
and
I
got
the
configuration.
E
So
you
got
a
public
key,
some
private
key
bunch
of
stuff
that
you
don't
really
need
to
care
about
right
now,
unless
you
want
to
use
wagger,
but
that's
the
whole
idea.
So
you
get
this
configuration
from
the
website
and
everything
is
applied
automatically
to
this
server
and
now
I'm
going
to
show
you
how
I
did
that
and
yeah
that's
where
rust
comes
into
play.
So
when
he
just
sauced
the
interface
here
at
the
top
left
right,
I
have
a
server.
E
I
have
a
few
devices
in
that
interface,
then
I
have
a
store,
which
is,
if
you
have
familiar
with
front-end
development,
that's
where
all
the
data
gets
stored
right,
so
you
can
have
reactive
components
throughout
your
website
and
an
API
service
talks.
The
VIP
word
here
and
that
this
down
here
is
on
the
bottom
right.
It's
my
internal
network,
where
I
now
want
to
add
a
new
letter.
So
what
I
just
did
is
I
touched
this
devices
form
on
the
website
and
I
added
the
new
laptop.
E
So
keep
that
in
mind
that
at
the
bottom
left
is
the
new
left
net
palpable
the
new
laptop
that
I'm
adding
to
the
network
once
I
add
device.
It
goes
into
the
store.
The
store
knows
that
something
changed.
It's
calling
the
API
service.
The
API
then
talks
this
vid
bot,
alright,
a
port
3000,
which
is
a
REST
API
written
in
wort.
E
Once
it
receives
the
payload,
it
has
to
update
the
configuration
on
the
server
when
the
configuration
gets
updated
systemd
if
you're
familiar
with
Linux
the
standards
or
the
processes
needs
to
restart
the
wire
guard
interface.
How
does
it
do
that?
So
what
I
used
is
I
notified.
It
looks
at
the
file
system
and
says:
ok,
this
fire
changed.
Please
do
something
so
in
this
case
the
WG
0
configuration,
which
is
the
wire
got
configuration
set
change
system,
the
restarts
the
wire
got
process.
E
Why
a
guard
picks
up
the
change
at
the
W
g0
interface
and
the
new
laptop
is
added.
So
there's
a
lot
of
stuff
right.
It's
a
if
you're
not
familiar
if
this
is
probably
what
is
going
on
the
WG
zero
thing
at
the
bottom.
Next,
the
ithi
h
zero,
it's
an
interface!
So
your
computer
things
it's
just
another
network
interface.
It
doesn't
know
that
anything
VPN
e
is
running
it
just
things:
okay,
so
network
interface
and
it's
the
nice
thing
about
wire
guard
also.
E
This
allows
you
to
use
all
the
existing
tooling
that
is
inside
of
Linux.
That's
why
I'm
able
to
use
I
notify
system
de
and
I
don't
have
to
build
all
of
this
stuff.
All
I
have
to
really
build.
Is
the
API
service
and
a
connection
between
the
interface
and
the
web
board,
and
this
is
where
stuff
gets
tricky
I.
There
are
a
few
problems,
so
the
first
problem
is
that
all
the
configurations
need
curve.
E
E
My
server
configuration
I
need
to
update
the
server
when
and
reload
the
interface
whenever
anything
changes,
which
is
what
you
just
saw
with
the
system,
D
and
I
notify
and,
to
be
honest,
I,
don't
want
to
do
security
in
JavaScript
I'm,
not
having
types,
even
Luis
type
squared
it's
just
I
didn't
want
to
do
it.
I
didn't
even
start.
I
was
like
ok,
this
is
not
going
to
happen.
I'm
going
to
look
into
rest
and
if
rest
can't
do
it,
then
I'm
not
gonna
fit
this
project.
E
So
how
did
I
do
it?
My
solution
is
to
use
rest
on
both
sides.
I
can
rely
on
existing
libraries,
I
have
the
same
libraries
in
the
front
end
and
the
back
end,
which
is
nice,
because
I
only
have
to
read
documentation
once
and
I
can
ensure
that
they
stay
up
to
date
and
are
compatible
with
each
other
and
I
encrypt.
All
communication
between
the
browser
and
the
bot
with
a
browser
unique
key
pair,
so
libraries
that
are
used
system-wide
libraries.
E
So
that
means
they
run
on
the
front
end
and
on
the
back
end,
are
the
cryptography
libraries
from
dalek.
We
can
find
them
here
which
is
255
f19,
which
is
generating
that
curve
and
then
I
use
another
one
called
edy
255
1
9,
which
is
helping
me
to
generate
signatures,
which
are
then
used
to
sign
the
payload
for
the
backend,
but
I
go
into
that
a
little
bit
and
then
I
use
30,
which
is
awesome.
It's
serialization
done
right
and
I.
Guess
that's
how
I
can
describe
it.
E
Here's
the
third
part,
which
is
the
backends
only
going
gonna,
go
into
it
shortly.
It's
instantiated
with
the
browsers
like
the
public
key
that
is
running
in
the
applications
in
the
browser.
So
that
means
that
you
have
to
set
up
the
interface
first.
How
do
you
set
it
up?
You
basically
visit
the
web
site.
It's
done
in
the
background,
but
then
you
get
a
public
key.
E
You
start
your
server
with
this
public
key
and
then
the
robot
is
able
to
verify
that
your
browser
is
the
one
sending
the
payload
right,
there's
signature,
it
can
verify
it
with
the
public
key
and
we
don't
need
user
accounts
and
all
that
stuff
I'm
using
warp
for
the
API
I
mentioned
this.
It's
awesome.
If
you've
read
the
Twitter
paper
servers
function,
this
is
pretty
much
an
implementation
of
that
I
feel
like.
If
you
haven't
read
it,
go
read
it
I
can
highly
recommend
it
and
check
out
work.
E
Once
you
wrap
your
head
around
it,
it
will
make
a
lot
of
things
easier,
especially
course.
So
cross-origin
requests
stuff
gets
a
lot
easier.
You
can
just
plug
a
filter
in
there,
then
systemd
for
the
process,
management
and
restarting
the
interface
and
I
notified
towards
to
pick
up
any
changes
on
the
file
system
and
here's
what
I
actually
want
to
talk
about
now,
the
interface
libraries.
So
how
do
you
get
rest
in
the
browser?
E
E
There
is
webassembly
as
a
lot
of
people,
probably
aware
and
there's
a
lot
of
really
nice
tool
in
available,
and
the
first
of
those
is
wasn't
bind
gen
all
right.
All
of
these
by
the
way
are
in
github
the
constellation
rust.
Wasn't
you
can
find
all
these
libraries
in
there
and
there's
a
pretty
good
documentation,
and
so
what
this
wasn't
Byington
do
it
automatically
generates
the
bindings
between
rest
and
JavaScript
for
you.
E
So
if
you
look
at
these
two
examples,
I
have
this
generate
key
pair
function
and
rest
that
takes
no
arguments
but
returns
a
string
and
then
I
entertain
ated
with
this
wasn't
binding,
and
this
helps
me
to
talk
between
rest
and
JavaScript
and
I.
Don't
have
to
do
anything
so
write
in
JavaScript,
you
just
pass
in
nothing,
you
just
call
the
function
and
then
rest
return.
Something
and
the
bindings
say:
okay,
we're
on
the
heap
all
right.
E
This
stuff
gets
saved
on
heap
and
we're
on
the
heap
can
I
find
this
where
in
memory
do
I
get
the
string
and
then
JavaScript
can
use
that
to
read
it
back
out,
and
all
of
that
done
is
done
in
the
background.
So
you
don't
have
to
worry
about
it.
The
same
works
if
you
passed
in
strings
so
at
the
bottom,
you
have
sign
message
right
which
signs
the
payload.
It
has
a
key
pair
and
the
message
and
then
returns
to
the
signature.
E
But
you
also
have
to
get
it
running
in
the
browser
right
just
generating
the
bindings
will
help
you.
You
still
have
just
wasn't
module
and
some
JavaScript.
How
do
you
get
in
the
browser?
So
wasn't
pack,
it
can
generate
publishable
webassembly
packages
for
you
automatically
and
I'm
just
going
to
show
you
a
small
video,
I
hope
this
works
so
you're
on
wasn't
pack,
it
builds
a
that's.
It
I
mean
it's
all
there
head,
it's
just
awesome.
E
E
Okay,
tooling,
is
great.
You
got
a
running
in
the
browser,
but
you're
still
gonna
make
mistakes
right.
The
compiler
is
gonna
catch
a
lot
of
them,
but
not
all
of
them
and
errors
do
happen
and
if
they
happen,
if
you
don't
use
this
library,
you
gotta
pull
your
hair
out
all
right.
So
this
really
really
really
helps
with
debugging
or
even
figuring
out,
what's
wrong
in
the
first
place
or
where
something
is
going.
So,
let's
say:
I
have
an
error.
In
my
code,
I
got
a
panic
and
I.
E
Don't
use
console
era
of
panic,
oh
great
name
by
the
way.
I
just
get
runtime
error.
Unreachable,
executed,
I
catch,
this
error,
I'm
a
JavaScript,
so
at
the
bottom
I
get
what
assembly
key
generation
is
going
wrong,
but
I
don't
really
know
where
the
error
happens.
So
I
googled.
This
happened
to
me
right
so
then
I
started
googling
should've
read
the
documentation
better
in
the
first
place,
but
anyway,
I
came
across
library,
initialized
it
and
there
we
go
now.
I
get
panicked
a
test
in
sourced
little
RS
on
line
40
I
can
go
in
there.
E
I
can
check
it
out.
What's
wrong
fix
the
error
and
life
is
easy
again,
so
those
were
the
most
important
interface
library,
so
it
wasn't
binded
and
to
generate
the
bindings
between
Ross
and
JavaScript.
So
you
don't
have
to
know
about
the
memory
layout
wasn't
packed
to
get
everything
into
the
browser
console
era,
panic
hook
to
make
development,
nice
and
easy
and
help
out
whatever's
to
occur
and
everything
can
be
found
in
the
rust.
Wasn't
organizational
guitar
so
pros
and
cons.
E
I
already
mentioned
this,
but
if
you
know
your
way
around
web
pack
wasn't
picked
makes
integration
a
breeze.
It
takes
what
5
to
10
minutes
to
get
the
surrounding.
It's
I
was
blown
away.
I
did
nothing
would
be
that
easy
testing
is
included
as
well.
So
you
can
write
unit
tests
for
your
weapon,
sembly,
stuff
cargo
feature.
Flags
are
just
amazing,
I
mean
I,
didn't
know
about
that.
I
didn't
have
any
use
case.
E
I
wrote
a
few
small
things
for
the
command
line
and
rest,
but
I
never
really
used
feature
flags,
but
here
I'm
going
to
come
there
in
a
second.
They
were
really
really
really
helpful.
Nd,
the
documentation
and
rust
is
just
I,
mean
doc,
start
RS
and
clicking
your
way
around.
When
you
have
to
read
about
cryptographic,
signatures
I
mean
that
was
awesome,
yeah
pecans,
they
are
still
some
cons.
E
It
is
the
the
abundance
why
Pig
so
I
think
it's
600
kilobyte
in
my
case,
which
doesn't
matter
because
I
only
download
the
application
once
and
it
runs
my
browser.
It's
a
single
page,
app,
the
the
rest
of
the
application
is
I,
don't
know
three
and
a
kilobyte
solenoids
still
less
than
a
megabyte,
but
the
bundle
size
really
like
takes
a
lot
of
that.
E
There
are
ways
around
this.
You
can
use
different
memory
memory
allocators,
but
they
don't
work
with
all
libraries.
So
in
my
case
with
this
cryptographic,
stuff
going
on,
I
was
not
able
to
use
the
the
reallocator
easily
I
also
haven't
figured
out
how
to
conditionally
load
the
console
error
Penacook.
So
what
I
have
to
do
right
now
is
while
I'm
in
development
I
call
this
function
globally.
E
So
it's
enabled
and
when
a
panic
occurs,
I
get
the
nice
message
in
the
console,
but
when
I
want
to
push
it
out
into
production,
I
have
to
move
this
manually.
There's
probably
a
way
around
this.
If
anybody
knows
so
really
appreciate
some
help
on
the
repository,
otherwise
I
keep
reading
until
I
find
it
other
cons.
If
you
use
wrestling
browser,
you
don't
have
frets,
and
this
is
where
the
feature
flex
really
come
in
handy.
E
So
a
lot
of
libraries
I,
don't
know
how
not
a
lot
I
don't
know
this,
but
the
ones
that
I
used
have
feature
flex
with
disabling
Fred
support.
As
you
can
run
everything
on
the
singer
Fred,
it's
really
helpful.
You
just
have
to
be
aware
of
it
that
if
your
library
only
works
multi-threaded,
you
will
not
be
able
to
use
it
in
the
browser.
E
E
There
is
one
more
thing
that
I
checked.
So,
let's
go
to
wasn't
binding
I
just
checked
this
earlier
and
I'm
sure
people
might
be
interested
in
this.
You
can't
only
do
strings
right.
There
are
other
things
you
can
put
an
array
which
are
going
to
be
boxes
all
right,
so
they're
going
to
go
onto
the
heap
and
then
you
can
store
integers,
for
example,
of
floats
I
saw
that
it's
possible
to
get
64-bit
integers
there
and
I'm
not
sure
how
this
relates
to
my
last
point
here
about
the
32-bit.
E
Only
somebody
knows
and
I'd
be
happy
to
learn
all
in
all.
I
can
say
it
was
really
amazing
to
use
rust
here
and
I
was
blown
away
by.
It
took
me
two
days
to
get
rest
completely,
set
up
and
understand
how
everything
works
and
write.
The
encryption,
which
was
I,
mean
it's
a
very
short
time
for
me,
and
one
expert
on
this
in
any
way.
So
I
can
highly
recommend
it.
E
If
you
have
any
project
where
let's
go
to
the
process,
better
I
have
any
project
where
you
want
to
use
western
browser,
I
think
it's
there.
Now
you
can
start
doing
it.
Even
if
it's
image,
manipulation
or
video
manipulation,
audio
manipulation
by
using
the
boxes
and
might
still
be
a
bit
slow,
I,
don't
know
how
fast
this
is
and
benchmarked
it,
but
it's
definitely
possible
now
and
it's
surely
faster
than
JavaScript.
E
If
you
would
like
to
find
out
more
everything,
I
did
this
open
source
is
a
GPL
3.0,
there's
a
whole
front,
end
code,
third
part
all
the
tooling
around
it
documentation
for
users
and
developers.
You
can
use
the
thing
advert
the
network
with
your
own
VPN,
have
wire
guard
running
and
get
your
own
super
high
speed
VPN.
E
A
E
E
This
might
kick
in
if
your
device
is
trying
to
reach
the
network
again
and
might
just
pick
up
the
connection,
all
right.
It's
going
to
buffer
it's
going
to
draw
up
a
damage
to
reinitialize
I,
haven't
seen
any
problems
with
it,
but
people
on
reddit
already
said:
there's
probably
better
to
not
restart
the
interface,
but
you
know
keep
all
the
collections
alive.
Somehow
it's
what's
beyond
me
and
it
was
beyond
what
I
built
this
for
anybody
has
a
technical
capabilities:
I'd
love,
some
help.
E
This
was
mostly
reading
and
about
the
libraries
I
had
the
the
set
up
getting
it.
I
use
a
very
specific
front
and
build,
which
is
the
view
CRI.
So
I
had
to
figure
that
out
and
I
don't
work
eight
hours
a
day
on
this
right,
so
it
took
two
days
off
I.
Don't
know,
however
long
I
worked
on
it,
I
had
to
integrate
it
with
my
existing
tools
and
then
I
had
to
read
both
the
libraries
had
to
figure
out
feature
flags
and
that
there
are
no
frets
32-bit
support.
So
that
was
the
biggest
issue.
A
E
A
A
A
D
Which
is
near
rotterdam
and
for
small
my
appreciation
for
being
allowed
to
give
this
presentation
I've
always
found
these
meetups
very
interesting
and
I
figured.
It
was
high
time
for
me
to
to
contribute
back
to
the
community.
Community
I
was
planning
on
giving
a
live
coding
session
at
first,
but
I
figured
the
slot
of
twenty
minutes
was
a
bit
too
limited
for
such
complex
and
time-consuming
material,
so
I
chose
instead
to
give
mostly
sheets
and
I'll,
throw
in
a
couple
demos
in
there.
If
time
allows
the
yeah.
D
The
start
so,
who
am
I
introduce
myself?
I,
was
born
and
raised
in
sunny
California
I
survived
up
to
now.
Nearly
40
years
of
hacking
through
my
life
I
started
way
back
with
assembler
a
UNIX
and
C
I
was
actually
one
of
the
rebels
who
decided
that
assembler.
Didn't
you
didn't
give
me
the
stuff,
I
need
and
I'm
moving
to
C.
So
I
was
considered
a
rebel
and
cast
aside,
but
I
held
in
there
eventually
became
I.
D
So
everything
I'm
going
to
tell
you
on
this
presentation,
is
available
on
my
github
I've
created
a
repository
called
rust,
node
add-on
template
and
that's
where
you
can
find
all
the
code,
samples
all
the
nitty-gritty
details
and
you
can
look
through
there
and
heart's
delight
so
yeah.
Why
are
we
using
rust
well
for
the
people
that
are
not
yet
quite
familiar,
rust
I
can
explain
the
main
characteristics
which
have
appealed
to
me.
It's
safe,
it's
fast,
its
concurrent
and
also
very
important,
is
that
there
is
no
garbage
collection.
D
D
There
is
no
runtime
overhead
and
it
gives
you
a
fairly
predictable
performance.
If
you
look
at
nodejs,
it
has
garbage
collection.
So
if
you
have
like
them
in
an
embedded
device
running
nodejs
that
has
to
do
measurements,
every
millisecond
and
send
it
out,
you
definitely
don't
want
to.
You
know
lose
that
if
it's
critical
information
and
I
think
rust
provides
an
interesting
opportunity
to
improve
that
also
yeah
I'm,
really
into
these
things,
is
a
Raspberry
Pi,
but
I
really
I'm
interested
in
the
low
level
access
that
it
provides
to
hardware
in
terms
of
device
drivers.
D
Ok,
let's
start
with
FF
I.
First
I'm
gonna
get
some
water,
so
FF
I
is
a
way
for
rust
to
be
able
to
use
external
C
modules,
as
you
can
see
on
the
top
I'm,
not
sure
if
you
can
see
my
mouse,
but
extern
C
provides
a
declaration
of
an
external
function
for
simplicity
here.
I
realize
this
is
a
bit
of
contrived
example,
but
is
purely
for
illustration
purposes.
Just
to
give
you
a
bit
of
hint
of
what
I'm
trying
to
explain.
So
we
have
an
external
see
function.
D
It
could
be
anything
but
in
this
in
this
we
will
using
the
square
root
function
and
we
use
this
compiler
directive
in
front
of
main
called
link
and
what
it
tells
you
is
that
when
you
do
hot
cargo
run,
you
want
to
link
it
with
the
EM
directory,
which
contains
a
square
root
function
and
then
in
main
I
have
I
define
X
as
a
floating
floating
points
64
and
the
results.
I
call
that
function
and
I
print
out
the
result.
D
D
Alright,
let's
go
one
bit
higher,
is
let's
assume
that
we
want
to
use
the
lid
and
crate
and
we
grab
the
square
root
there,
and
we
can
use
that
crate
and
make
a
direct
call
to
the
square
root
function.
And,
as
you
see
here,
there's
no
need
to
call
safe
in
front
of
it,
which
makes
it
a
bit
nicer
and,
of
course,
I
know
all
you
rust
fans
out.
There
realize
it's
the
best
way
to
do.
D
If
you're
more
interested
in
safe
and
unsafe
I
have
to
admit
that
I
found
that
very
difficult
to
understand,
I
think
next,
two
lifetimes
and
borrowing
it
was
the
hardest
thing
for
me
to
get
my
head
around,
but
you
can
look
in
reston
eMCON,
which
provides
a
nice
explanation
about
it,
and
you
can
also
look
in
the
log
in
the
rest
of
book.
This
just
shows
you
the
entry
in
here
to
see
the
safe
and
unsafe
functions
or
in
the
book
of
course,
beautiful
beautiful
documentation.
I
mean
this
is
stuff.
You
can
really
appreciate.
D
Okay,
let's
talk
about
now
about
rest
inside
of
a
seed
project,
yes
C
C++
and
basically
I've
taken
this
from
the
interoperability
guide,
rust
with
C,
and
you
want
to
basically
do
two
things.
You
want
to
create
a
see
friendly,
API
and
rust,
and
then
you
have
to
embed
the
project
in
some
kind
of
external
build
system,
the
binding
which
will
bind
you
to
the
sea
and
at
the
moment
C
is
the
only
possibility.
D
D
D
I,
won't
read
all
the
text,
but
you
can
go
there
and
you
see
in
the
nodejs
here
a
whole
description
of
the
API
and
what
it
does
and
yeah
it's
pretty
complicated,
there's
so
much
information
that
it's
really
hard
to
figure
out,
what's
really
important.
What's
not
so,
hopefully
the
struggles
that
I
went
through
will
help
someone
in
the
future
to
be
able
to
focus
and
dive
into
the
important
parts.
When
you
look
at
the
entry
into
this
documentation,
you
see
they're
just
zillions
and
zillions.
D
Okay,
so
then
I
started
looking
around
the
available
crates.
I
read
actually
a
couple
articles
or
videos
where
someone
had
used
notes
a
DSS
and
thought
it
was
great.
Wonderful
awesome
I
said
now
they
so
it
provides
a
native
binding
to
the
nodejs
and
API
I
thought
I
would
give
that
a
go
and
look
in
here.
If
you
look
in
the
documentation.
C
D
How
do
you
create
this
thing?
Okay,
so
let's
create
a
package
and
you
do
the
good
old
Cardinal
in
it
live
and
you
pass
an
extra
option
called
the
desk
desk
create
a
Skype,
and
this
is
a
flag
which
tells
the
tells
car
go
run
to
build
a
dynamical
library
and,
depending
upon
the
operating
system
of
the
year,
using
and
as
usual,
you'll
get
a
project
directory.
That
looks
like
this.
Nothing
surprising
if
we
look
at
the
cargo
duct
tamil
file,
we'll
see
that
he
has
added
a
Lib
crate
type
here.
D
The
main
way
to
hook
into
an
odious
application
is
with
module
registration.
It's
a
whole
story.
I
won't
go
into
details,
but
I'm
just
gonna
say
it's
described
here.
If
you
need
to
understand
the
real
details,
but
basically
what
it
means
is
in
your
code,
in
your
library,
you
have
to
provide
a
registrate,
extern,
C
function
called
nappy,
underscore
register
of
the
score
module
underscore
bi,
and
that
will
be
your
entry
point
when
that
is,
is
loaded
in
your
no
J's
application
via
a
require.
D
D
And
you
use
the
name
of
the
function
which
you
put
into
a
C
string.
It
only
understands
C
strings
and
the
results
you
have
to
first
create
a
0
mm
0
place
for
the
result,
and
it
will
create
a
result
which
you
can
return
in
the
set
name
property
which
basically
includes
this
function
in
the
exports
exports.
D
D
Create
function,
let's
do
a
simple,
simple,
an
example
using
nodejs
sis,
so
we
want
to
create
a
function
called
hello,
say
hello,
sir,
and
in
using
the
notes.
This
system,
we
have
a
create
function
and
we
have
to
create
the
name
of
it
and
we
have
to
create
a
function.
And
then
we
return
the
name
property
into
the
exports.
D
Okay,
so,
let's
look
at
say
hello.
What
does
it
actually
look
like?
Well,
it's
a
bit
unsafe,
experiencee,
say
hello
and
you
have
to
create
a
result.
You
have
to
create
a
string
and
you
have
to
make
a
call
to
the
nappy,
create
string,
utf-8
and
it
had
you
pass
it
as
a
pointer
and
the
length
and
it
returns
to
the
result
that
you
can
pass
back.
D
Build
and
run
not
cargill
build.
It
will
create
a
library
with
a
dot
SL
which
you
have
to
copy
into
the
index
dot
node,
which,
in
your
index,
dot
yes
file.
That's
the
entry
point
of
your
node
app
you
will.
It
would
require
it
with
index
node
and
you
can
call
it
to
call
it
into
your
node
app,
and
you
run
that,
like
no
dot
index
J
s
I'm
now
going
to
give
you
a
demo,
don't
get
nervous
but
I'm
going
to
do
a
bit
on
that
demo
of
how
do
we
add
two
numbers.
D
D
That
will
do
this
for
me,
and
hopefully
you
can
see
this
and
you
will
see.
Register
module
has
been
called.
It's
registered
the
functions,
the
number
of
functions,
one
of
which
is
add,
number
and
I
run
it
and
I
get
a
number
back
7.4.
So
this
is
a
node
code
calling
into
rust
and,
as
you
can
see
here,
I've
just
printed
to
add
on
add
numbers
and
it's
a
native
code
function
called
add
numbers.
D
D
This
is
what
the
cargo
looks
like
again,
the
crate
type
CD
Lib
neon
build
neon
module.
Registration
is
a
lot
easier
than
the
previous
example,
and
all
you
have
to
do.
Is
this
m
dot,
export
function,
say
hello,
say
hello,
nice
and
the
function
that
we're
gonna
call
say.
Hello
is
also
very
simple.
You
don't
have
to
worry
about
mem,
zeros
and
unsafe
stuff.
You
can
just
return
directly
a
string
and
it'll
work.
D
Now
the
demo
I'm
going
to
show
you
is
add
numbers
similar
to
the
one
that
we
had
before,
but
now
using
the
neon
so
I'm
pretty
straightforward.
You
have
an
argument
which
is
the
x
value,
you'll
argument,
which
is
the
Y
value.
You
add
the
result
and
you
return
the
result
as
a
CX
number
and
let's
see
if
that
works.
C
D
Now,
I
also
provide
a
number
of
other
examples
to
pretty
much
cover
the
amat,
the
gamut
of
returning
objects
and
sending
messages
and
that
kind
of
stuff
but
I
also
an
example
of
an
async
function.
The
Fibonacci,
which
is
this
one
I,
won't
show
you
the
example
that
I
made
in
no
js'
because
it's
awful
to
look
at.
But
this
is
a
bit
nicer
and
if
I
try
to
run
it.
D
C
D
D
Well,
yeah
computational
demands
the
performance
is
predictable
and
if
you
look
at
I/o
T's
you
internet
of
things,
you
have
low
level
access
to
GPU
and
GPIO
and
which,
for
example,
if
you
have
a
lot
of
these
devices
all
over
the
place,
either
a
fleet
of
vehicles
or
measuring
sites
throughout
the
countryside,
and
you
can
use
cheaper
hardware.
You
can
actually
save
a
lot
of
money,
so
those
there
budget-minded
will
be
interested
in
exploring
this
more
as
usually
there
are
some
disadvantages.
D
Yeah
you
have
to
support
another
programming,
language
might
be
a
pain,
might
not
be.
A
pain
might
be
fun
to
attract
people
that
are
interested
in
learning.
A
new
programming
language.
The
tool
chain
is
slightly
different
and
the
deploy
pipeline
might
have
implications
on
the
current
one
that
you're
using
and
yeah
steep
learning
curve.
D
Look
at
my
github
and
you'll
get
everything
you
need
to
know
I,
provided
it
there
for
the
people
that
were
unfortunately
eager
to
see
my
code,
but
couldn't
because
of
a
goof
up.
I
mean
sorry
about
that.
Hope.
You
liked
it
if
you
so,
with
all
the
corona
thing
and
losing
my
job
I've
been
looking
around
for
work.
So
if
you
are
looking
for
someone
to
help
you
out
I
hope
you
can
look
me
up,
and
these
are
my
details.
A
Okay,
thank
you.
Kevin
yeah
there
was
some
hiccups,
I'm,
sorry
for
not
jumping
in
earlier
Thanks,
helping
out
questions.
Let
me
browse
through
so
yeah
on
metrics,
a
common
trickiness
with
ffs
is
holding
on
to
data
from
the
other
side,
with
the
library
that
you
are
using
Kandra
safely
hold
on
to
node
values
after
the
function
exists
and
cannot
hold
on
to
rest
value.
Somehow.
D
A
A
C
F
To
another
one,
let
me
quickly
share
the
screen.
Can
you
give
me
a
thumbs
up
when
it
works
that
works?
I
assume
it
does.
So,
thanks
for
hanging
in
here,
I
know
it's
late
and
I.
Try
to
be
quick
and
I
want
to
talk
about
git
UI
today
and
all
the
terminal
awesomeness
in
rusts
that
I
experienced
developing
it
and
because
terminal
applications
or
CLI
applications
and
rusts
are
such
a
match
made
in
heaven.
F
F
You
find
me
on
github
and
twitter
under
my
handle
extra
west
I'm,
a
game
developer
by
trade
and
I
recently
founded
a
company
game
rosters,
and
why
am
I
telling
you
this
anyways
so
for
this
particular
company
and
the
projects
we
were
working
on,
I
started
to
use
rust
two
years
ago.
Basically,
and
since
then,
we
shipped
almost
two
titles
with
that,
and
let
me
show
you
quickly
what
kind
of
kind
of
games
that
are
beautiful
picture.
This
is
stack
four.
Okay,
maybe
not
everything
is
fine
on
command
line,
but
let's
open
the
actual
picture.
F
So
this
is
a
Kinect
for
game
in
3d,
with
real-time
PvP
player
versus
player
on
mobile
devices,
and
this
is
built
on
Rus
technology
and
the
current
project
is
actually
a
little
bit
more
complex.
It's
a
third
offense
PvP,
a
real-time
game
on
mobile
as
well,
and
it's
called
tall
Rangers,
but
we
are
here
today
to
talk
about
terminal.
You
is
right,
so
what
is
get
you
I
get?
You
I
looks
like
that
and
I
hope.
F
F
So
what
is
get
you
I
anyway?
It's
a
terminal
UI
for
forget.
My
main
focus
was
to
make
it
fast
and
lightweight
and
to
the
second
primary
focus
was
to
make
it
super
easy
to
use
for
noobs
like
me
in
the
terminal,
because
I'm
definitely
not
someone
who
is
who
grew
up
using
them
and
like
remembering
tons
of
shortcuts
is
definitely
not
my
thing.
F
I'm
used
to
use
gooeys,
but
due
to
circumstances,
I
was
looking
around
for
a
new
key
tool
and
I
came
up
with
the
idea
that
hey,
maybe
maybe
I,
just
look
for
something
in
the
terminal
right
and
let
me
quickly
show
you
how
get
your
looks
action.
So
it's
like
typical,
like
its
interface,
you
can
look
at
the
log
you
can
stash
stuff.
You
can
look
at
your
stashes,
you
can
like
stage
stuff,
look
at
your
diff
and
so
on.
So
pretty
like
standard
I
guess.
F
So
a
couple
of
you
might
now
say:
wait
what
why
isn't
there
stuff
like
that?
Already
right,
of
course,
I
looked
into
the
like
two
most
prominent
projects
that
I
could
find,
take
and
lazy
get
and
let
me
quickly
open
up
tick
here
in
my
repository
and
you
will
see
hey
nice,
it's
a
it's
a
terminal
application
right,
it's
exactly
what
I
was
looking
for
well
yeah
kind
of,
but
it's
my
form
for
my
definition
of
this
centricity
that
I
was
looking
for.
F
F
F
If
you
open
up
the
help
here,
you
see
it's
definitely
not
as
much,
but
still
quite
some
key
shortcuts,
but
it
at
least
gives
you
some
sort
of
commands
down
at
the
bottom
to
tell
you
what's
possible
right
now.
In
this
situation-
and
that's
definitely
something
I
was
inspired
by,
but
then
I
was
coming
across
this
list
here
of
commits
and
I
was
wondering
like
hey
wait.
I
have
I
have
more
than
three
hundred
commits
in.
D
F
Let's
open
the
Linux
official
Linux
gets
repository
in
it,
which
attire
at
the
time
of
my
checkout
was
around
two
hundred
nine
hundred
thousand
commits
I
wanted
to
see
like
how
long
does
it
take
to
open
the
whole
revision
history?
How
much
memory
does
the
application
take
at
the
end
and
like
how
big
is
the
binary
anyways?
Is
the
UI
freezing
like
while
loading
or
does
it
be
crash?
Maybe
so
I
can
actually
start
looking
into
lazy,
get
first
to
show
you
for
your
own
eyes.
F
F
So
let's
scroll
at
the
bottom
nothing's
happening
okay,
so
we
can
actually
scroll
forward
here,
because
I
did
the
test
already
before
it
will
take
lazy,
git,
actually
57
seconds
roughly
to
load
the
entire
history
and
it
will
then
grow
and
blow
up
to
about
2.6
gigabytes
of
RAM
and
the
binary
size
in
itself
is
already
60
megabytes
and,
as
you
will
see,
as
you
would
have
seen,
is
that
the
whole
UI
starts
freezing
once
once
it
actually
gets
into
into
loading
the
remaining
history
and
sometimes
I
even
experience
crashes
in
there.
F
So
it
didn't
really
hold
up
to
the
kind
of
standard
that
I
was
looking
for
pretty
similar
picture.
When
you
open
TIG,
it
basically
shows
you
nothing
for
the
first
10
seconds
or
so
it
looks
like
something
is
broken
here,
but
at
least
it
tells
you
it's
loading.
So
let's
give
it
a
couple
of
seconds.
Oh
yeah!
Here
we
go
so
now.
F
At
least
we
can
scroll
through
this
first
10,000
entries
or
so,
which
I
mean
it's
it's
a
problem
if
you
are
just
interested
in
the
latest
stuff,
if
you
have
to
wait
every
time
like
10
seconds
for
stuff
to
load-
and
you
can
see
it's
not
even
loading
30,
so
30
thousand
entries
yet
and
we
are
already
at
the
30-second
mark.
So
let's
stop
that
here.
What
TIG
actually
will
take
is
around
four
minutes
to
load
the
entire
history.
F
It's
also
going
to
grow
up
significantly
to
1.3
gigabytes
of
RAM
I'm,
not
gonna,
free
it
up
anymore,
I,
don't
know
what
they
keep
on.
Holding
there
I
mean
they
don't
have
a
garbage
collector
to
excuse
themselves,
it's
the
C
application,
so
they
are
definitely
the
winner
in
binary
size.
Here,
six
hundred
kilobytes
and
the
UI
keeps
pretty
stable
and
responsive,
but
a
couple
of
hiccups
here
and
there,
but
definitely
no
crash.
So
that's
definitely
an
outside.
F
Now,
let's
open
up
the
repository
with
get
UI,
let's
go
into
the
log,
and
you
can
see
it's
also
not
possible,
of
course,
to
load
it
right
away.
But
as
you
can
see,
we're
already
at
the
two
hundred
thousand
commits
mark
and
we
can
basically
smoothly
scroll
through
the
entire
history
here,
absolutely
no
problem,
we
can
jump
up
again
and
yeah
I
mean,
of
course
we
don't
have
as
many
features
yet
as
some
of
the
competitors,
but
I
also
didn't
see
a
diff
right
away
in
intake.
F
That's
definitely
something
I'm
also
going
to
implement
eventually
but
yeah.
We
are
now
at
like
eight
hundred
thousand,
and
it's
it's
done
now
so
here
we
can
scroll
through
everything.
So
it
turns
out.
It
takes
like
around
twenty
four
seconds
for
get
UI
to
load
the
entire
history
and
the
application.
F
Whoops,
so
why
did
I
choose
to
do
it
in
rust,
right
so
a
little
bit
of
history?
My
past
is
C++
C,
sharp
in
in
a
professional
capacity
and
actually
for
all
my
side.
Projects
are
use
D
for
ten
years
or
so
before,
I
started
to
look
into
rust.
That
was
my
way
to
go.
Nowadays,
it's
professionally
and
for
side
projects,
the
same
picture
I'm
using
go
wherever
I
need
a
sink,
but
we
come
to
that
later
and
I'm,
using
basically
rust
for
everything
else.
F
It's
for
for
all
the
things
that
are
that
me
to
interface
to
the
CFI,
as
we
saw
on
the
previous
talk
for
CLI
applications
for
performance,
critical
applications
and
expand,
and
especially
for
portability
reasons,
because
for
our
games
we
need
to
target
like
iOS
and
Android,
and
good
luck,
building
go
or
D
for
that.
That's
that
stuff,
so
three
things
that
I
want
to
highlight
that
I
experienced
while
building
get
UI
and
using
Russ
for
it
and
those
are
Diagnostics,
concurrency,
no
surprise
here
and
community.
F
So
what
do
I
mean
by
Diagnostics,
so
I
think
I
read
that
somewhere
before.
But
it's
definitely
true
to
me.
The
compiler
really
feels
like
a
peer
programmer
that
you're
that
sitting
like
sitting
next
to
you
and
bothering
you
with
the
uncomfortable
questions
like.
Why
are
you
not
handling
this
error?
You
know
unwrapping
is
not
a
good
way
to
go
here
and
that
sort
of
stuff
and
Clippy
for
me
goes
even
further
and
is
kind
of
a
teacher,
because
to
be
honest,
after
I
read
the
book
and
I
played
around
with
a
couple
of
applications.
F
Clippy
really
told
me
lie.
It
taught
me
basically
like
the
remaining
50
percent
of
my
rusts
best
practices
that
I'm
using
now
so
it
gives
me
hints
like
it
would
actually
be
more
performant
here
to
use
to
not
clone,
or
maybe
you
want
to
pass
this
by
a
reference
and
not
just
copy
it
that
sort
of
stuff.
It's
it's
really
convenient
and
I
will
show
you
some
examples,
so
I
really
religious
about
those
Diagnostics,
because
I'm
totally
convinced
to
to
try
to
tackle
as
much
stuff
as
possible.
Already
at
compile
time
and
everything.
F
Every
problem
that's
sorted
out.
There
is
something
I
don't
need
to
debug
later
and
especially
when
you
ship
stuff
on
devices,
you
don't
want
to
try
to
debug
that
stuff,
when
it's
already
so
I'm,
actually
using
those
annotations
here,
I
put
it
I
put
Clippy
too
pedantic
I
really
wanted
to
tell
me
every
everything.
Every
nitty-gritty
detail
that
I
could
be
bothered
with
I
forbid,
completely
forbid
unsafe
code,
just
to
make
sure
that
also
nothing
that
I
pull
in
is
using
it
and
no
unwrapping.
No
panic.
F
One
example
of
those
errors
that
I
want
to
show
you
or
Clippy
like
teaching
more
better
for
a
better
word,
exactly
something
stupid,
of
course,
that
I
did
I
was
I,
was
using
a
filter
map
on
an
iterator,
basically
just
to
filter
out
one
particular
item
and
then
going
to
this
one.
Only
and
of
course
there
is
a
link
for
that
and
Clippy
told
me
like
hey,
you
can
just
do
fine
map
here,
because
you're,
obviously
just
looking
for
this
one
entry
I
have
no
idea
how
they
do
that.
But
it's
it's
just
amazing.
F
So
second
point
concurrency
I
mean
of
course,
for
what
you
saw
and
get
you
I,
it's
very
important
to
to
to
run
stuff
multi-threaded,
because
we
have
to
do
a
certain
expensive
gate
operations
in
the
background
to
not
block
the
UI
and
to
actually
not
get
this.
This
hiccup
experience
so
concurrency
is
super
important
and
I.
F
And
of
course
we
can
also
do
like
lock
three
data
types,
there's
a
lot
of
stuff
already
built
in
into
the
standard
library.
That's
that's
pretty
awesome
and
simple
to
use
so
I'm,
really
a
fan
of
that
feature
of
rust
and
then
last
but
not
least,
the
the
entire
community
is
really
what
what
sold
it
to
me
personally.
So
this
is
amazingly
friendly
atmosphere.
Those
meetups
everything
is
recorded.
F
That's
definitely
something
I
didn't
expect
before
when
I
was
starting
to
look
into
rust,
I
started
to
look
for
resources
to
learn
about
it,
and
there
was
so
many
videos
and
so
many
recordings
every
conference,
it's
like
so
easy
to
catch
up
on
stuff
that
happened
over
the
last
couple
of
years
and
actually
see
also
some
of
the
faces
behind
the
language
and
it's
all
free
and
it's
it's.
It's
really
cool
to
see
also
like
that.
F
Even
the
smallest
meetups
will
have
their
code
of
conducts
making
sure
everyone
is
aware
of
those
like
community
guidelines
that
Russ
wants
to
see
and
I
really
experienced
that
myself.
When
you
have
any
sort
of
new
question
once
once
you
start
out
and
go
into
the
discord
channels,
everyone's
super
friendly
and
there's
always
someone
who
wants
to
help
out.
That's
really
really
cool
and,
of
course,
thanks
to
cargo
and
crates
I/o,
there's
a
ton
of
libraries
that
you
can
rely
on,
and
some
I
mean
most
of
them
are
really
actively
maintained.
F
I
never
really
had
huge
issues,
finding
contact
to
talk
to
the
people
working
on
it
or
even
like
contributing,
and
everyone
was
super
friendly
and
forward
on
this,
and
that
was
really
really
awesome
and,
of
course,
I'm
using
a
ton
of
those
libraries
and
that's
why
that's
some
of
the
details
I
want
to
tell
you
about.
This.
Is
the
five
major
parts
I
would
say:
I'm
using
is
urs,
which
is
like,
like
a
wrapper
around
AC
library.
F
That
actually
does
all
the
accessing
to
the
git
repository
and
makes
this
some
like
at
least
safe
and
at
least
more
rust
idiomatic.
But
I
had
to
write
my
own
wrapper
around
it
again
to
make
it
to
actually
be
able
to
put
stuff
of
stuff
like
requests
to
it,
into
into
motif
credits
like
into
threats
for
the
UI.
F
F
So,
basically,
you
just
get
a
buffer
and
you
write
like
text
and
styles
like
annotated
with
styles
into
it,
and
on
top
of
that
I'm
using
tu
IRS,
which
gives
you
a
little
bit
more
sophisticated
feeling
of
an
actual
visit
library
where
you
can
draw
like
trains
and
get
a
lot
of
tooling.
That
they're
gonna
show
you
in
a
bit
on
the
concurrency
side,
there's
two
major
libraries
with
rayon
supplying
me
with
a
thread
pool
and
crossbeam,
where
I'm
using
the
selects
functionality
and
also
the
channels
from
so.
F
So
it's
actually
like
responsive
to
screen
to
size,
changes
and
also
and
all
sort
of
stuff-
and
this
is
handled
for
me
and
I-
want
to
render
a
budget
which
is
actually
a
paragraph
which
takes
a
iterator
of
strip
of
text
and
a
block
in
this
terminology
is
basically
the
the
borders
that
you
see
around
the
individual
chunks
of
the
UI
here
and
that's
basically
it
you
can
give
it
a
title.
It
makes
sure
that
text
is
wrapped
correctly
and
that
really
lifts
a
lot
of
work
from
from
me
and
there
in
this
application.
F
F
But
one
major
feature
that
I'm
actually
also
using
from
rayon,
is
the
global
panic
handler,
which
turned
out
to
be
a
tougher
thing
with
using
the
standard
library
threads,
because
they
they
don't
provide
a
functionality
like
that.
So
to
get
something
similar
I
would
have
to
wrap
my
my
code
in
that
I'm
running
in
threads,
actually
myself
to
to
catch
panics
like
for
diagnostic
reasons,
I.
Definitely,
while
developing
wanted.
This
because
of
course,
stuff
breaks
and
I
want
to
know
where
and
why?
So?
F
So
that's
unfortunate,
but
this
code
snippet
it's
actually
never
changed
since
I
set
up
the
application,
and
so
it's
it's
okay,
that
it's
not
that
short
and
simple,
but
still
there's
stuff
that
I
wish
I
would
see
in
rest
as
well.
Of
course,
this
nothing's
ever
perfect
and
I
definitely
wanted
to
put
some
things
to
think
about
in
here
as
well.
So.
F
Make
sure
async
this
is
a
holy
like
a
totally
different
discussion,
but
it's
definitely
the
reason
why
I'm
still
using
for
some
applications
like
go
components
because
I
find
it
super
confusing.
This
whole
async
situation
in
the
ecosystem,
like
having
multiple
executors,
don't
know
how
to
combine
them.
F
In
my
repository
making
them
like
a
standard
check,
that's
going
to
be
run
when
my
CI
is
running
the
the
linting
and
definitely
something
I
think
would
be
super
useful
for
companies
also
to
define
certain
standards
on
their
code
bases
and
something
that
that
was
like
freaking
me
out.
A
lot
is
the
local
non
published
rates
kind
of
problem,
because
initially
the
the
application
was
supposed
to
be
published
on
Craig's
I/o,
to
be
able
to
just
install
using
cargo
install,
and
that's
all
super
nice.
F
But
the
problem
is,
you
cannot
depend
on
like
like
like
crates.
They
are
not
on
crates
I/o,
which
means
I,
couldn't
even
split
up
my
project
in
my
own
repository
into
certain
like
into
sub
crates,
which
of
course,
I
did
already
when
I
found
that
out.
So
it
turns
out.
That's
that
you
that's
also
a
reason
why
crates
I
always
flooded
with
those
tiny
libraries,
sometimes
because
you
are
forced
to
do
that
right
and
a
different
problem
that
it's
connected
to.
F
That
is
if,
if
I
had
a
situation
where
I
had
to
fork
a
like,
like
a
little
crate
that
I'm
relying
on
same
problem
right,
I
cannot
temporarily
embed
it
or
something
and
use
it.
I
really
have
to
I
would
have
to
republish
it
actually
under
a
different
name
or
try
to
get
to
the
to
the
maintainer
to
take
accept
my
patch
or
whatnot.
F
But
last
but
not
least,
the
the
biggest
thing
for
me
is
I,
guess
a
legacy
from
id
time,
which
is
meta
programming
and
that's
something
that
I
that
I
really
found
lacking
like
I,
feel
the
lack
of
option
and
that
sort
of
stuff.
Now
that
I
know
it
from
rust
everywhere
else.
This
is
something
I'm
missing
in
rusts
from
the
D
times.
F
So
what
I
mean
by
that
is,
for
example,
implicit,
compile
time
function,
execution
I,
really
I'm
worried
that
this
approach,
that
rust
is
taking
now
to
have
that
you
have
to
annotate
your
function
with
Const
to
be
able
to
run
it
at
compile
time.
Is
this
C++
approach
with
accordance
expert,
which
I
think
is
the
wrong
way
to
go,
because
in
the
end
the
compiler
is
the
guy
who
is
possible?
Who
is
capable
of
checking
that
for
me
right?
F
So
why
can't
I
rely
on
that
instead
of
annotating
everything
and
generic
duck
typing
is
something
I'm
really
missing.
I
have
two
generic
functions:
I
have
to
define
what
kind
of
T
it
is
that
I'm
accepting
here
I
cannot,
just
you
know,
use
a
t,
dot
foo,
because
I
want
the
compiler
to
make
sure
T
has
a
foo
function.
I
really
have
to
come
up
with
an
import
rate
with
the
trait
and
that's
something
I
think
is
limiting,
especially
when
working
with
external
libraries,
where
you
have
external
trades.
F
There's
situations
where
you
cannot
implement
a
trait
for
something
or
where
you
just
want
to
be
able
to
accept.
Also
types
from
external
libraries
like
that
and
compile
time
reflection
is
something
that's
that's
I
think
the
biggest
strength
D
ever
has
had
and
I
really
encourage
people
to
look
into
it
because
I
think
it's
something
that
I
didn't
see
in
any
other
language
so
far,
and
one
example
that
I
just
try
to
like,
like
pseudocode
style
once
a
to
translate
to
rust.
F
Is
this
int
function
where
in
D
you
have
this
static
F,
where
you
actually
can
introspect
in
two
types
at
compile
time
and
make
sure
that
this
is
evaluated
like
only
if
the
T
can
be
reduced
to
an
I-32,
for
example?
But
of
course
it
gets.
It
goes
way
more
complex
and
you
can
do
way
more
things
like
looking
into
it.
F
Where
I
was
missing,
this
the
most
was
when
I
wrote
my
first
macro,
where
I
wanted
to
have
these
components
like
accessories
to
these
components,
for
my
UI
layer,
where
I
wanted
to
only
maintain
one
list
of
components
instead
of
having
the
risk
that
I
forget
to
extend
it
in
one
end
of
the
code
base,
so
I
wrote
this
accessor
macro
that
then
actually
generates
those
two
accessor
functions
and
while
doing
that,
I
was
thinking.
Okay,
it
would
be
super
nice
now,
if
I
could.
F
F
A
A
If
you
have
other
questions
for
the
speaker
feel
free
to
chat,
why
metrics
or
soon
contact
we
have
a
few
more
announcements,
and
this
wasn't
the
last
rusty
thing
this
week
there
is
like
a
London
rust
meetup
happening
tomorrow
and
on
Thursday
is
our
famous
hack
and
learn,
which
would
be
happen
in
Berlin,
but
I
assume.
This
is
also
online.