projects
/
rust-101.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
typos, and a TODO list
[rust-101.git]
/
workspace
/
src
/
part05.rs
diff --git
a/workspace/src/part05.rs
b/workspace/src/part05.rs
index 1eb02d893a1c82ceb992013f039fac48f009ce44..78113b7bb36e5e5acc1af45842f66e6de153ceb2 100644
(file)
--- a/
workspace/src/part05.rs
+++ b/
workspace/src/part05.rs
@@
-1,19
+1,17
@@
-// ***Remember to enable/add this part in `main.rs`!***
-
// Rust-101, Part 05: Clone
// ========================
// ## Big Numbers
pub struct BigInt {
// Rust-101, Part 05: Clone
// ========================
// ## Big Numbers
pub struct BigInt {
- pub data: Vec<u64>,
+ pub data: Vec<u64>,
// least significant digit first, no trailing zeros
}
// Now that we fixed the data representation, we can start implementing methods on it.
impl BigInt {
pub fn new(x: u64) -> Self {
if x == 0 {
}
// Now that we fixed the data representation, we can start implementing methods on it.
impl BigInt {
pub fn new(x: u64) -> Self {
if x == 0 {
- BigInt { data: vec![] }
+ unimplemented!()
} else {
unimplemented!()
}
} else {
unimplemented!()
}
@@
-33,7
+31,7
@@
impl BigInt {
//
// **Exercise 05.1**: Implement this function.
//
//
// **Exercise 05.1**: Implement this function.
//
- // *Hint*: You can use `pop
()
` to remove the last element of a vector.
+ // *Hint*: You can use `pop` to remove the last element of a vector.
pub fn from_vec(mut v: Vec<u64>) -> Self {
unimplemented!()
}
pub fn from_vec(mut v: Vec<u64>) -> Self {
unimplemented!()
}
@@
-61,7
+59,7
@@
impl<T: Clone> Clone for SomethingOrNothing<T> {
}
// **Exercise 05.2**: Write some more functions on `BigInt`. What about a function that returns the number of
}
// **Exercise 05.2**: Write some more functions on `BigInt`. What about a function that returns the number of
-// digits? The number of non-zero digits? The smallest/largest digit?
+// digits? The number of non-zero digits? The smallest/largest digit?
Of course, these should all just borrow `self`.
// ## Mutation + aliasing considered harmful (part 2)
enum Variant {
// ## Mutation + aliasing considered harmful (part 2)
enum Variant {
@@
-74,7
+72,7
@@
fn work_on_variant(mut var: Variant, text: String) {
Variant::Number(ref mut n) => ptr = n,
Variant::Text(_) => return,
}
Variant::Number(ref mut n) => ptr = n,
Variant::Text(_) => return,
}
- /* var = Variant::Text(text); */
+ /* var = Variant::Text(text); */
/* BAD! */
*ptr = 1337;
}
*ptr = 1337;
}