Module System

3 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€65.24
List Price:  €93.20
You save:  €27.96
£55.93
List Price:  £79.91
You save:  £23.97
CA$95.58
List Price:  CA$136.56
You save:  CA$40.97
A$107.13
List Price:  A$153.05
You save:  A$45.92
S$95.25
List Price:  S$136.08
You save:  S$40.82
HK$547.90
List Price:  HK$782.75
You save:  HK$234.85
CHF 63.85
List Price:  CHF 91.21
You save:  CHF 27.36
NOK kr770.13
List Price:  NOK kr1,100.23
You save:  NOK kr330.10
DKK kr486.51
List Price:  DKK kr695.05
You save:  DKK kr208.53
NZ$117.65
List Price:  NZ$168.07
You save:  NZ$50.42
د.إ257.06
List Price:  د.إ367.25
You save:  د.إ110.18
৳7,679.19
List Price:  ৳10,970.75
You save:  ৳3,291.55
₹5,834.32
List Price:  ₹8,335.10
You save:  ₹2,500.78
RM333.81
List Price:  RM476.90
You save:  RM143.08
₦91,422.33
List Price:  ₦130,608.93
You save:  ₦39,186.60
₨19,487.31
List Price:  ₨27,840.21
You save:  ₨8,352.89
฿2,585.90
List Price:  ฿3,694.31
You save:  ฿1,108.40
₺2,277.50
List Price:  ₺3,253.72
You save:  ₺976.21
B$361.10
List Price:  B$515.88
You save:  B$154.78
R1,320.17
List Price:  R1,886.05
You save:  R565.87
Лв127.48
List Price:  Лв182.13
You save:  Лв54.64
₩96,293.43
List Price:  ₩137,567.94
You save:  ₩41,274.51
₪266.53
List Price:  ₪380.78
You save:  ₪114.24
₱4,038.21
List Price:  ₱5,769.12
You save:  ₱1,730.90
¥10,975.59
List Price:  ¥15,680.08
You save:  ¥4,704.49
MX$1,206.90
List Price:  MX$1,724.22
You save:  MX$517.31
QR255.26
List Price:  QR364.68
You save:  QR109.41
P965.80
List Price:  P1,379.77
You save:  P413.97
KSh9,448.65
List Price:  KSh13,498.65
You save:  KSh4,050
E£3,352.63
List Price:  E£4,789.68
You save:  E£1,437.04
ብር3,985.10
List Price:  ብር5,693.24
You save:  ብር1,708.14
Kz58,489.70
List Price:  Kz83,560.30
You save:  Kz25,070.60
CLP$66,385.51
List Price:  CLP$94,840.51
You save:  CLP$28,455
CN¥507.19
List Price:  CN¥724.59
You save:  CN¥217.40
RD$4,111.01
List Price:  RD$5,873.12
You save:  RD$1,762.11
DA9,398.61
List Price:  DA13,427.17
You save:  DA4,028.55
FJ$158.17
List Price:  FJ$225.97
You save:  FJ$67.79
Q544.39
List Price:  Q777.73
You save:  Q233.34
GY$14,639.41
List Price:  GY$20,914.34
You save:  GY$6,274.92
ISK kr9,791.60
List Price:  ISK kr13,988.60
You save:  ISK kr4,197
DH708.11
List Price:  DH1,011.63
You save:  DH303.52
L1,243.72
List Price:  L1,776.81
You save:  L533.09
ден4,016.98
List Price:  ден5,738.79
You save:  ден1,721.81
MOP$563.94
List Price:  MOP$805.67
You save:  MOP$241.72
N$1,340.22
List Price:  N$1,914.68
You save:  N$574.46
C$2,575.16
List Price:  C$3,678.96
You save:  C$1,103.79
रु9,316.74
List Price:  रु13,310.19
You save:  रु3,993.45
S/261.07
List Price:  S/372.97
You save:  S/111.90
K269.52
List Price:  K385.04
You save:  K115.52
SAR262.50
List Price:  SAR375.02
You save:  SAR112.51
ZK1,842.03
List Price:  ZK2,631.59
You save:  ZK789.55
L324.63
List Price:  L463.78
You save:  L139.14
Kč1,640.70
List Price:  Kč2,343.96
You save:  Kč703.26
Ft25,605.88
List Price:  Ft36,581.40
You save:  Ft10,975.51
SEK kr762.91
List Price:  SEK kr1,089.92
You save:  SEK kr327.01
ARS$61,153.48
List Price:  ARS$87,365.86
You save:  ARS$26,212.38
Bs484.56
List Price:  Bs692.26
You save:  Bs207.70
COP$275,828.59
List Price:  COP$394,057.74
You save:  COP$118,229.14
₡35,172.98
List Price:  ₡50,249.28
You save:  ₡15,076.29
L1,727.65
List Price:  L2,468.18
You save:  L740.53
₲519,796.34
List Price:  ₲742,598.03
You save:  ₲222,801.68
$U2,684.12
List Price:  $U3,834.62
You save:  $U1,150.50
zł281.95
List Price:  zł402.81
You save:  zł120.85
Already have an account? Log In

Transcript

Rust has a powerful and flexible module system. Let's use this Hello project as an example, let's add a route library module by creating a lib.rs file. We already know that main.rs is a special file that will be the Hello binary lib.rs is a special file that will be the root of the Hello library. Let's open up lib.rs and put a function inside it. Here's a pretty simple function. It's the only contents of the library.

Let's go split screen and look at Main Rs. The main function attempts to call the library's greet function directly by specifying the absolute path to the function. The absolute path is the library name which is the same as the name of your project in cargo tamo Hello, in this case, then the scope operator which is double colons, and then the name of the function greet this almost works But all items in a library are private by default, even to binaries in the same project. Let's add pub in front of the greet function to make it public. Now the code works. But specifying the absolute path of something at every call site could be really painful, especially if the path is really long, which is where the use statement comes in use brings an item from some path into some scope.

And I will often call it import without thinking about it because I'm so used to Python. So let's go back to our example and add a use statement above the main function. Since the use statement is outside of any smaller scope, this brings greet into scope for all of Maine. Now we can simplify the function call to just greet. This works exactly the same as before, but it's more concise at the calling site. This use statement is how you will bring into scope anything from the standard library or from any other Another project that you want to use, the standard library is always available by default, it's spelled STD.

But when you read it out loud, you say standard. So this is standard collections hashmap, you will become really familiar with the contents of the standard library. But until you do, let me show you a shortcut for how to find documentation for things in the standard library. Go to Google and type in rust standard. And then the thing you want to find for example, if I wanted to know about the vector type, I would put rust standard vector, you will find that the top result is nearly always the page for the standard library item that you need. That's pretty cool.

I use it all the time still, but what if you need something that's not in the standard library crates.io is rusts package registry. That's where I would start for today's purposes. You can consider crate to be a synonym for package. Most of the rust community will use crate and package interchangeably with that in mind the name crates.io makes sense for a package registry. But since crate technically has multiple meanings, and I want to be precise in my teaching, I all mostly say package. Once you have identified the name and version of the package that you want to use, you need to go back to cargo Tama and add the package as a dependency.

We're going to do this in the dependencies section that we skipped earlier. The format is the name of the package, then an equal sign and then the version of the package in quotation marks. Here I've specified the RAND package to use for generating random numbers. Now that I have it listed in my dependencies. I can use it from both my library and my binary either by an absolute path or by bringing a specific item into scope with a use statement. In the next video, we will go over scalar types

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.