►
Description
Selecting a programming language has far-reaching implications for any development team, affecting everything from new employee training to system architecture...
More at https://rustfest.global/session/1-using-rust-in-metal-fabrication/
B
B
B
Well,
it
refers
to
the
manufacturing
process
that
gives
us
these
goodies
in
life.
Large
parts
of
this
ferrari
are
made
for
metal.
The
body
paneling
is
made
from
giant
sheets
of
metal
pressed
into
the
beautiful
aerodynamic
shape,
and
the
engine
blocks
are
effectively
carved
from
large
blocks
of
metal.
B
It
also
brings
us
the
metal
factory
equipment
that
bottles
our
beloved
coca-cola
drinks.
It
brings
us
the
belt
conveyors
that
run
the
amazon
warehouses.
That
brings
us
the
boxes
to
our
front
doors
and,
of
course,
our
beloved
gaming
rigs
with
the
metal
power
supplies
and
the
cases
all
made
out
of
sheet
metal
bent
and
cut
into
the
just
the
right
shapes.
B
B
Here,
with
more
sparks,
we
see
a
laser
cutter
which
uses
high
intensity
laser
beams
to
physically
cut
shapes
out
of
sheets
of
metal,
and,
as
you
can
imagine,
these
are
very
expensive.
High
precision,
precision
machines
and
optimally
using
these
manufacturing
equipment
is
very,
very
important
to
the
success
of
any
manufacturing
operation.
B
B
We
need
to
go
and
purchase
the
raw
materials.
This
requires
the
exchange
of
money
that
requires
approval,
workflows
and
integration
with
accounting
systems
and
once
the
materials
are
at
hand,
then
we
need
to
make
sure
that
we
utilize
these
expensive
resources,
the
manufacturing
equipment
and
scheduling
workers
and
the
machines
to
optimize
optimally
plan.
The
manufacturing
system.
B
B
The
domain
is
very
complex
and
so,
by
separating
out
concerns
with
the
into
these
separate
modules,
we've
been
able
to
achieve
a
higher
level
of
development.
Efficiency
on
the
left
is
the
front
end,
which
is
designed
to
optimally
present
data
to
the
to
the
customer
or
the
user
in
the
tasks
that
they
are
doing
right
now.
B
The
bff,
the
backend
for
front
end
is
a
typescript
node.js
process
and
its
role
is
to
fetch
data
from
wherever
the
data
is
whether
it's
another
api.
Another
system,
a
third
party
api,
whatever
it
is
its
job,
is
to
go
and
get
the
data
and
finally,
the
back
end.
This
is
written
in
rust
and
its
goal
is
to
enforce
the
domain
model
and
to
maintain
data
integrity,
and
this
is
the
area
that
I
would
like
to
talk
about
today.
B
B
B
So
rgb
is
a
way
that
we
use
often
in
web
development
and
let's
say
that
8-bit
colors
can
be
used,
and
so
we
have
a
tuple
of
3
8-bit
numbers
taking
another
domain
such
as
printing,
we
may
need
to
use
cmyk,
so
another
expression
of
color,
with
a
different
set
of
tuples
and
coming
from
c
plus
plus
this.
If
this
way
of
expressing
kind
of
typed
unions
in
rust
has
been
incredibly
powerful,
but
as
with
all
things
in
the
real
world
things
weren't
as
easy
as
they
seemed.
B
B
And
handling
this
color
is
also
quite
easy.
With
a
match
statement.
We
can
easily
decompose
each
of
rgb
or
cmyk
and
utilize
those
appropriately
and
as
with
all
things
where
the
domain
is
constantly
evolving,
the
rest
compiler
and
the
ability
for
the
match
statement
to
tell
us
when
we're
missing
things.
B
This
has
actually
saved
our
saved
us
many
many
times
here.
The
commented
outline
for
physical
color
sample
in
the
match
statement
would
generate
a
compiler
error,
and
so,
if
somebody
modifying
the
domain
model
or
the
actual
struct
did
not
realize
all
the
places
where
it
was
being
used,
we
could
simply
ask
the
compiler
to
detect
it
for
us.
B
But
that
would
require
us
to
do
run
time,
checks
which
are,
of
course,
sometimes
necessary.
But
when
we
have
business
logic
coded
in,
we
often
want
to
have
compile
time
checking
and
so
by
using
phantom
data
types.
Here,
we
can
create
some
enums
for
a
japanese,
yen
or
us
dollar,
so
that
when
we
create
a
statement
like
this,
where
we
try
to
add
a
japanese
yen
to
a
usd
dollar,
we
would
get
a
compile
error
like
this,
a
very,
very
friendly
compiler.
That
tells
us
exactly
what
happened.
B
B
B
Using
a
real
world
product
as
an
example
really
adds
concreteness
to
it,
and
so,
for
example,
we
started
using
tower
grpc
because
linker
d
was
using
it
and,
of
course
we
started
using
rust
in
version
1.35,
which
is
pre
async
await,
and
so,
when
async
await
rolled
around,
we
weren't
quite
sure.
If
we
should
jump
on
the
bandwagon
right
then,
and
in
the
end
we
actually
still
do
not
use
async
weight.
B
We
use
we
just
horizontally
scale
until
we
can
handle
it,
and
so
some
guidance
as
to
where
the
async
awaits
story
is
going.
I
think,
would
be
really
really
useful
for
us
and
we're
definitely
watching
the
community
and
seeing
where
things
are
going
right
now.
B
One
of
the
ways
that
we
have
decided
to
do
hiring
is
to
look
for
the
core
aspects
of
what
are
the
attributes
that
make
somebody
a
good
rust
engineer
and
so
for
us.
What
worked
and
what
has
worked
for
the
last
year
or
two
is
the
familiarity
with
a
type
system
with
traits
and
generics,
or
something
that's
resembling
traits
or
generics,
such
as
java
or
haskell
or
typescript,
as
well
as
various
notions
of
functional
programming
and
finally,
familiarity
with
computer
architecture
and
memory
management
and
low-level
aspects
of
how
programs
run.
B
Of
course,
if
somebody
had
all
three
of
these
aspects,
they
probably
already
have
touched
rust
a
little
bit,
but
we
have
found
that
many
engineers
from
other
languages
have
been
very,
very
successful,
using
rust
in
the
development
of
enterprise
software
with
us,
and
it
was
because
of
their
strength
in
one
or
more
of
these
areas
and
as
with
many
engineers,
we
don't
write
code
just
to
write
code.
We
write
code
to
make
good
things
to
make
a
change
and
so
from
a
hiring
perspective.
B
B
And
once
we
have
new
hires
training,
them
has
been
required
new
kinds
of
efforts
because
sometimes
relearning
new
foundational
concepts,
but
also
learning
to
talk
with
the
compiler.
We
have
found
that
once
people
get
used
to
talking
to
the
compiler,
they
don't
actually
need
very
much
hand
holding
they'll
just
get
up
to
speed
very
very
quickly.
B
B
B
I'd
like
to
give
a
few
closing
words
about
using
rust
and
metal
fabrication.
Metal
fabrication
itself
is
a
very,
very
complicated
real
world
domain,
but
rust
has
been
an
amazing
language
for
developing
the
software
and
the
library
ecosystem.
Maturity
has
been
actually
good
enough
for
us,
but
at
the
beginning
it
was
a
bit
difficult
for
us
to
gauge
and
using
rust
itself
has
been
technically
an
amazing
experience
and
from
a
non-technical
perspective,
different
kinds
of
efforts
were
required
for
hiring
and
training
to
maintain
this
kind
of
efficiency
in
our
development.
B
But
the
friendly
and
welcoming
community
has
been
absolutely
wonderful.
The
resources
are
available
in
japanese
as
well,
and
so,
as
my
last
words,
let's
as
corporations
and
as
any
enterprise
user
or
as
any
commercial
entity,
think
it's
really
or
actually
any
development
team
for
that
matter.
I
think
it's
really
really
important
to
share
real
world
use
cases
of
rest
and
to
really
support
the
rust
community,
because
the
success
of
the
community
really
gives
back
to
the
success
of
every
project
that
we
work
on.
C
Thanks
saki,
if
you
have
any
questions,
please
leave
comments
to
the
chat.
Anyway.
There
are
some
questions.
C
B
Yes,
thank
you
for
the
question.
The
rest
structures
are
reflected
in
the
typescript
layer.
In
fact
it
requires
we
use
grpc
in
between,
and
so
we
can
share
some
of
the
grpc
protobuf
definition
files
so
that
we
can
do
easily.
We
can
easily
translate
them
to
both
sides.
However,
of
course
the
type
systems
are
not
exactly
the
same
in
rust
and
typescript.
C
Process
any
other
questions.