diff options
author | Aleksey Kladov <[email protected]> | 2018-07-30 12:08:06 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-07-30 12:08:06 +0100 |
commit | 1edb58a802f183f79dc2c4bc15921394ef8abb31 (patch) | |
tree | 24114171c61a9f433b9a54008057fa0297f91302 /src/yellow/red.rs | |
parent | 6983091d6d255bcfd17c4f8c14015d8abc77928d (diff) |
reformat
Diffstat (limited to 'src/yellow/red.rs')
-rw-r--r-- | src/yellow/red.rs | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/yellow/red.rs b/src/yellow/red.rs index 3f0ddd04c..8907100e4 100644 --- a/src/yellow/red.rs +++ b/src/yellow/red.rs | |||
@@ -1,11 +1,5 @@ | |||
1 | use std::{ | 1 | use std::{ptr, sync::RwLock}; |
2 | ptr, | 2 | use {yellow::GreenNode, TextUnit}; |
3 | sync::RwLock, | ||
4 | }; | ||
5 | use { | ||
6 | TextUnit, | ||
7 | yellow::GreenNode, | ||
8 | }; | ||
9 | 3 | ||
10 | #[derive(Debug)] | 4 | #[derive(Debug)] |
11 | pub(crate) struct RedNode { | 5 | pub(crate) struct RedNode { |
@@ -22,9 +16,7 @@ struct ParentData { | |||
22 | } | 16 | } |
23 | 17 | ||
24 | impl RedNode { | 18 | impl RedNode { |
25 | pub fn new_root( | 19 | pub fn new_root(green: GreenNode) -> RedNode { |
26 | green: GreenNode, | ||
27 | ) -> RedNode { | ||
28 | RedNode::new(green, None) | 20 | RedNode::new(green, None) |
29 | } | 21 | } |
30 | 22 | ||
@@ -42,13 +34,14 @@ impl RedNode { | |||
42 | RedNode::new(green, Some(parent_data)) | 34 | RedNode::new(green, Some(parent_data)) |
43 | } | 35 | } |
44 | 36 | ||
45 | fn new( | 37 | fn new(green: GreenNode, parent: Option<ParentData>) -> RedNode { |
46 | green: GreenNode, | ||
47 | parent: Option<ParentData>, | ||
48 | ) -> RedNode { | ||
49 | let n_children = green.children().len(); | 38 | let n_children = green.children().len(); |
50 | let children = (0..n_children).map(|_| None).collect(); | 39 | let children = (0..n_children).map(|_| None).collect(); |
51 | RedNode { green, parent, children: RwLock::new(children) } | 40 | RedNode { |
41 | green, | ||
42 | parent, | ||
43 | children: RwLock::new(children), | ||
44 | } | ||
52 | } | 45 | } |
53 | 46 | ||
54 | pub(crate) fn green(&self) -> &GreenNode { | 47 | pub(crate) fn green(&self) -> &GreenNode { |
@@ -75,12 +68,15 @@ impl RedNode { | |||
75 | if children[idx].is_none() { | 68 | if children[idx].is_none() { |
76 | let green_children = self.green.children(); | 69 | let green_children = self.green.children(); |
77 | let start_offset = self.start_offset() | 70 | let start_offset = self.start_offset() |
78 | + green_children[..idx].iter().map(|x| x.text_len()).sum::<TextUnit>(); | 71 | + green_children[..idx] |
79 | let child = RedNode::new_child(green_children[idx].clone(), self.into(), start_offset, idx); | 72 | .iter() |
73 | .map(|x| x.text_len()) | ||
74 | .sum::<TextUnit>(); | ||
75 | let child = | ||
76 | RedNode::new_child(green_children[idx].clone(), self.into(), start_offset, idx); | ||
80 | children[idx] = Some(child) | 77 | children[idx] = Some(child) |
81 | } | 78 | } |
82 | children[idx].as_ref().unwrap().into() | 79 | children[idx].as_ref().unwrap().into() |
83 | |||
84 | } | 80 | } |
85 | 81 | ||
86 | pub(crate) fn parent(&self) -> Option<ptr::NonNull<RedNode>> { | 82 | pub(crate) fn parent(&self) -> Option<ptr::NonNull<RedNode>> { |