From 33f53ccd75c9088f17f3e30db4806da41cbd317c Mon Sep 17 00:00:00 2001 From: Alexander Fadeev Date: Wed, 3 May 2023 20:02:15 +0300 Subject: [PATCH 1/4] Mediator: Add `Rc>` approach I found that `Rc>` may actually be useful in some cases. I decided to move this case into the repo for a quick reference. --- .github/workflows/test.yml | 2 + Cargo.toml | 3 +- README.md | 3 +- behavioral/mediator/README.md | 123 +++++++++++++++--- .../mediator/images/mediator-mut-problem.png | Bin 0 -> 58021 bytes .../images/mediator-rust-approach.jpg | Bin 0 -> 45750 bytes behavioral/mediator/images/problem.png | Bin 0 -> 43873 bytes behavioral/mediator/images/solution.png | Bin 0 -> 42428 bytes .../{ => mediator-rc-refcell}/Cargo.toml | 4 +- .../mediator/mediator-rc-refcell/README.md | 27 ++++ .../mediator/mediator-rc-refcell/main.rs | 25 ++++ .../mediator-rc-refcell/train_station.rs | 54 ++++++++ .../trains/freight_train.rs | 35 +++++ .../mediator-rc-refcell/trains/mod.rs | 11 ++ .../trains/passenger_train.rs | 35 +++++ .../mediator/mediator-top-down/Cargo.toml | 12 ++ .../mediator/mediator-top-down/README.md | 72 ++++++++++ .../mediator/{ => mediator-top-down}/main.rs | 0 .../{ => mediator-top-down}/train_station.rs | 0 .../trains/freight_train.rs | 0 .../{ => mediator-top-down}/trains/mod.rs | 0 .../trains/passenger_train.rs | 0 22 files changed, 385 insertions(+), 21 deletions(-) create mode 100755 behavioral/mediator/images/mediator-mut-problem.png create mode 100755 behavioral/mediator/images/mediator-rust-approach.jpg create mode 100755 behavioral/mediator/images/problem.png create mode 100755 behavioral/mediator/images/solution.png rename behavioral/mediator/{ => mediator-rc-refcell}/Cargo.toml (55%) create mode 100644 behavioral/mediator/mediator-rc-refcell/README.md create mode 100644 behavioral/mediator/mediator-rc-refcell/main.rs create mode 100644 behavioral/mediator/mediator-rc-refcell/train_station.rs create mode 100644 behavioral/mediator/mediator-rc-refcell/trains/freight_train.rs create mode 100644 behavioral/mediator/mediator-rc-refcell/trains/mod.rs create mode 100644 behavioral/mediator/mediator-rc-refcell/trains/passenger_train.rs create mode 100644 behavioral/mediator/mediator-top-down/Cargo.toml create mode 100644 behavioral/mediator/mediator-top-down/README.md rename behavioral/mediator/{ => mediator-top-down}/main.rs (100%) rename behavioral/mediator/{ => mediator-top-down}/train_station.rs (100%) rename behavioral/mediator/{ => mediator-top-down}/trains/freight_train.rs (100%) rename behavioral/mediator/{ => mediator-top-down}/trains/mod.rs (100%) rename behavioral/mediator/{ => mediator-top-down}/trains/passenger_train.rs (100%) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a0f4a78..4f0812f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,6 +23,8 @@ jobs: - run: cargo build --bin command # TUI. It can run on the local machine. - run: cargo run --bin iterator - run: cargo run --bin mediator + - run: cargo run --bin mediator-top-down + - run: cargo run --bin mediator-rc-refcell - run: cargo run --bin memento - run: cargo run --bin memento-serde - run: cargo run --bin observer diff --git a/Cargo.toml b/Cargo.toml index af72350..526310b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,8 @@ members = [ "behavioral/chain-of-responsibility", "behavioral/command", "behavioral/iterator", - "behavioral/mediator", + "behavioral/mediator/mediator-rc-refcell", + "behavioral/mediator/mediator-top-down", "behavioral/memento", "behavioral/observer", "behavioral/state", diff --git a/README.md b/README.md index 7e1942a..cc4ee55 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,8 @@ Also, the examples contain a **README.md** with instructions and additional expl cargo run --bin chain-of-responsibility cargo run --bin command cargo run --bin iterator -cargo run --bin mediator +cargo run --bin mediator-top-down +cargo run --bin mediator-rc-refcell cargo run --bin memento cargo run --bin memento-serde cargo run --bin observer diff --git a/behavioral/mediator/README.md b/behavioral/mediator/README.md index adbd0b8..0cb08d7 100644 --- a/behavioral/mediator/README.md +++ b/behavioral/mediator/README.md @@ -1,20 +1,19 @@ -# Mediator Pattern +# Mediator -There is a research and discussion of the **Mediator Pattern in Rust**: -https://github.com/fadeevab/mediator-pattern-rust. +_*Mediator* restricts direct communications between the objects and forces them +to collaborate only via a mediator object_. It also stands for a Controller in the MVC (Model-View-Controller) pattern. -Top-Down Ownership approach allows to apply Mediator in Rust as it is -a suitable for Rust's ownership model with strict borrow checker rules. It's not -the only way to implement Mediator, but it's a fundamental one. - -## How To Run +## How to Run ```bash -cargo run --bin mediator +cargo run --bin mediator-top-down +cargo run --bin mediator-rc-refcell ``` ## Execution Result +Output of the `mediator-top-down`. + ``` Passenger train Train 1: Arrived Freight train Train 2: Arrival blocked, waiting @@ -24,12 +23,94 @@ Freight train Train 2: Leaving 'Train 3' is not on the station! ``` +## Problem + +_*Mediator* is a challenging pattern to be implemented in *Rust*._ + +A typical Mediator implementation in other languages is a classic anti-pattern +in Rust: many objects hold mutable cross-references on each other, trying to +mutate each other, which is a deadly sin in Rust - the compiler won't pass your +first naive implementation unless it's oversimplified. + +By definition, [Mediator][1] restricts direct communications between the objects +and forces them to collaborate only via a mediator object. It also stands for +a Controller in the MVC pattern. Let's see the nice diagrams from +https://refactoring.guru: + +| Problem | Solution | +| ---------------------------- | ----------------------------- | +| ![image](images/problem.png) | ![image](images/solution.png) | + +A common implementation in object-oriented languages looks like the following +pseudo-code: + +```java +Controller controller = new Controller(); + +// Every component has a link to a mediator (controller). +component1.setController(controller); +component2.setController(controller); +component3.setController(controller); + +// A mediator has a link to every object. +controller.add(component1); +controller.add(component2); +controller.add(component2); +``` + +Now, let's read this in **Rust** terms: _"**mutable** structures have +**mutable** references to a **shared mutable** object (mediator) which in turn +has mutable references back to those mutable structures"_. + +Basically, you can start to imagine the unfair battle against the Rust compiler +and its borrow checker. It seems like a solution introduces more problems: + +![image](images/mediator-mut-problem.png) + +1. Imagine that the control flow starts at point 1 (Checkbox) where the 1st + **mutable** borrow happens. +2. The mediator (Dialog) interacts with another object at point 2 (TextField). +3. The TextField notifies the Dialog back about finishing a job and that leads + to a **mutable** action at point 3... Bang! + +The second mutable borrow breaks the compilation with an error +(the first borrow was on the point 1). + +## Cross-Referencing with `Rc>` + +```bash +cargo run --bin mediator-rc-refcell +``` + +`Rc>` hides objects from compiler eyes inside of an opaque smart pointer. +In this case, borrow checks move into the runtime that means panicking in case of +borrow rules violation. + +There is an example of a [Station Manager example in Go][4]. Trying to make it +with Rust leads to mimicking a typical OOP through reference counting and +borrow checking with mutability in runtime (which has quite unpredictable +behavior in runtime with panics here and there). + +Key points: + +1. All trait methods are **read-only**: immutable `self` and immutable parameters. +2. `Rc`, `RefCell` are extensively used under the hood to take responsibility + for the mutable borrowing from compiler to runtime. Invalid implementation + will lead to panic in runtime. + ## Top-Down Ownership -The key point is thinking in terms of OWNERSHIP. +```bash +cargo run --bin mediator-top-down +``` + +☝ The key point is thinking in terms of OWNERSHIP. + +![Ownership](images/mediator-rust-approach.jpg) 1. A mediator takes ownership of all components. -2. A component doesn't preserve a reference to a mediator. Instead, it gets the reference via a method call. +2. A component doesn't preserve a reference to a mediator. Instead, it gets the + reference via a method call. ```rust // A train gets a mediator object by reference. @@ -46,8 +127,12 @@ The key point is thinking in terms of OWNERSHIP. } ``` -3. Control flow starts from `fn main()` where the mediator receives external events/commands. -4. `Mediator` trait for the interaction between components (`notify_about_arrival`, `notify_about_departure`) is not the same as its external API for receiving external events (`accept`, `depart` commands from the main loop). +3. Control flow starts from `fn main()` where the mediator receives external + events/commands. +4. `Mediator` trait for the interaction between components + (`notify_about_arrival`, `notify_about_departure`) is not the same as its + external API for receiving external events (`accept`, `depart` commands from + the main loop). ```rust let train1 = PassengerTrain::new("Train 1"); @@ -68,9 +153,13 @@ The key point is thinking in terms of OWNERSHIP. station.depart("Train 3"); ``` -![Top-Down Ownership](https://github.com/fadeevab/mediator-pattern-rust/raw/main/images/mediator-rust-approach.jpg) +A few changes to the direct approach leads to a safe mutability being checked +at compilation time. -## References +👉 A real-world example of such approach: [Cursive (TUI)][5]. -1. [Mediator Pattern in Rust](https://github.com/fadeevab/mediator-pattern-rust) -2. [Mediator in Go (Example)](https://refactoring.guru/design-patterns/mediator/go/example) +[1]: https://refactoring.guru/design-patterns/mediator +[2]: https://github.com/rust-unofficial/patterns/issues/233 +[3]: https://chercher.tech/rust/mediator-design-pattern-rust +[4]: https://refactoring.guru/design-patterns/mediator/go/example +[5]: https://crates.io/crates/cursive diff --git a/behavioral/mediator/images/mediator-mut-problem.png b/behavioral/mediator/images/mediator-mut-problem.png new file mode 100755 index 0000000000000000000000000000000000000000..35bb182dc139289de9f3dca435ee85634911e903 GIT binary patch literal 58021 zcmY(q1z40p+y1>Yh;%p7(%q$mh;)dO3rk6dw7?0IXsErxc}DpR007{;Rg%{N0FYpa-y%$O#FZ$WbxZ(& z9`IKFm5!(Jei|CkPBsnYJ1ru0YKFulv^OgqYBo^h5U#w*P7cK3&QD(Si1_iwAEJBQpPI5!V*yzr$v& zfw)3NtXcoB*O^jp=>Z_0#(C4yf3Eb#cwpM!3>#YU0vM+%Zs0`Rd;ec->m@K^GX<0{qPX5<@(M?b9!-pB0&~z!ETA#y)EkkGL%6YR; zu7&Y;JZUEl&SEfY zDG*P3hO4rRFx@`C|F>yJMOPb(iqnWByku{#rg+{W!N^ckQxi5lOG$$cw8JS3=6f1t zeikIztjtWP)a`c8;ZA;rdnk8fLDOckt<7X21r^)(@aMdKkM|xP`;|T3(8d!OmDI6$ z5e4}Ea^CSUR$J`^G-|hhcXu~8UAyFM>+v@LqfsqQ{Kj^_8U%x!WS}if>DzKWHu*}& zc_DW|&X#Jax<7lmmj>E)GSK@(rT4f1=65`9%Y%!f)|2p|e0UN7B>2X7c^v5618hz`LD4`AvvXT{5XYYK42h zPhsOpp`wG#aosds@}BlG9`@y@yV#bu)Jj}TXiM2z3|hbQ2)pR3%cZRVK)9H9c-5Z5 z55^44e6OXoIxG#h6LH`F;Bnf=+JqyrP+^R2p5m6hTOrLGHh=z6V_{ES`sSC<^-A!f zGDqn;5`P)9ANOo3p^R-t;0u|PE+U8TB=4Qbj6RPcCk!R>buK#h(BK}U7L?VmKC9cW z8sK(P{rE8ng+BN>g%(C{q#Og(SyM-PaP8*+k4J{zWs=1CsNACPyj?XEj_x!TD7Roc z*8V5T8Ag|<6pTckqTQHv^fWOosf~b|1!_bJ*nos9^Be#lgHt zZUb`1#>R%R{Y;C`m3XbnZQE{9@xmKA-*x*mpQ9EJ`?e)*lF_K$1oX}nVf$o^tcQDe zzF;d7G3X1T=jktUxP>%UOr`{!SLHqKPI{Wg$F=H~{ooCY?(?Oj^@$iV1(`Wq>{L@B zcJ;Wrb|dLhWWZM5KYvCs8YDr4BJ`xS^5uO9lGN{*S(hAm6(Q3=G)9=4t*b{dnhE_i(${q$)hyfD)WC<)o`ibfDOxGk=z7gHE{|$g2x*8DyAbw8AH-}9}lGluDaeBtH#SZZE z9c`uzFMtgY5U_YtnL@ zd9CR9#$2@*#rw8rn?q;&(P8B1^)qIn4WT@(Gu5$dY)koJbQf%c;dHY2PRN24b%+OM z@31|Z2R=UqFFCU8RQl~cAaVsK-ztmM*4xMH`qX+pcd^sDkMIzb^6BxQa zS@T^+e2sbxWxvEd8Ps3-O1i4>zkzrQlX@lx@Yd6Qj(c0-whaG=*+r*L9Ana60*&sK zU=(b2BV0aBU9OC#oxGHVHaCsT7udMi5bQteSM!c-ivvCzN%aonLB!R^wtMr|KNSxb5P`Gm-2Hs^xi{T}|PH+YN2V!u~)?q8$ z0goF%E{lAPOo&(~%9ihTf=_0fKRw=z_%}1+gE0ZnTIelW zUqa1%Z(v^|PF29iCagb0cPU9u%oiajZ2g)Ps3LJ#4=OdnKT_MbvfBq!hI69>MBDE6 zOdefQ92yHH5c`C!l+aP*9{1Jh08f+Kw9zyQ)^w+$>F=v$|F%b(T8wLbpS3WNg&zcr zcMBs@R}1JCUPmogx1xQwKvK(Owfi}bzGE`htnSj;=@C9LSso4h^|hp%qHtFgnRsZMVA|{#?Lk zXRi)|lL_6wuMN@q?61(+0c9$fKM)kX10zvUu65vQqU97>sC`SGm`>!W9Y8D%V+U=I z4-SZr`SAC&Ait~ol9z|R=v*D*;wJhFO$e;mwW=y0_FDx zRhs(Gs3Hkavac{kNRAI6M>6(-X_V{Zrz81JgFo@32ctsAjjJ{AVSm#r)By1}wcjY? z+)!cU?(t92F8mS+gjXS8_ho>y8nQfr)N5V6=kz-O>qHs~z($R=tNwn2KaC+U>(F#? zhmPABplSN3@452bw+_reCC>RQjx$Agm`AXK4j2MJ&G=qeIraww0Je`5BQF-JRip#p zv#aUET_6Ey)4_z`P;UaEPqA+mXrd!A{Burgm{6!`HBgR#!h-_ZzXYhI>4J z{e5VwvM1S!mtS!sRG$j`?K@?YV@R+N0Q62t3_^fNB_o}&$cY*@;tiVrpclPO1ThrM zEa#P>DmhhT&H8|GWP2QkVCSd#nyi5A`8J%8NFXk+ zaFq~)v7BuX6VP4x&GN4@Ir<=49P49;X9Y%8A4sn2ZLp;;(R%<8+5u4Xp<$)5gNQBx zTmUb2wIoF=byqL?x3V*zze9_4Mn=vAsyjo*j6rIEXTux?ltV#eMtE7IWT9N|v8(}X zI_-jqoRGv3@`6+GkG6?DNEp7#fl&b@PAZ>54(Sk55iL#?un;}t*|!w-d46TYGGp^>e1(JA=aGNisc^XHeJDrw*+dR(IW z>$QkQ7?tDxtC8qngB{jYBF%TJ0oeE`@AHH=UGKs`5V08`o;(-j5M`GwH6bv+z$1yH zR{pg?B+hgWDf+0G^~?pYWOVXT!&bTj;-MCyiA#_8$lRaD%=^I)q(uMJdz^PJ&$vf1 zy6e9-1=v0;s$Y(!fh5BOE_u;_c50eItxsvTzA`eppD4_b&2l2&!*Qew05-=tZbw&S z17rfjo8}H0e%c>Rj0(Pq-xCcWYH#k;SM1{{6+U3 z>IwY0C?yKC^%ba<)qqM(usH*A;v#i~L=Gkgt@RSw17!Bhxfd;#o8;NoR?KS9i$rgr z$)@dK_Ok+f@-!y!>o7Y=l(g7qdRDuyp4rJ{JkzET3dW@QpIkRJ0`3WP+27)pWO28g z4NKhL2bgw-e*$yc5mWFB<4p3`jv+QN*ubF+-y}(#etE8>R+1bL!gZmFyY_T&GFL$! zI}Qz|_3ka+dU&{M;{pERe~*>&qLsk%s~%Gd*Cqe!=Rl1D6;pP*;hE)q*K_QF&W{)p zlpy@8HHa>yA?b4N0gnu(Q3F>&x zm<)2eG5Jk&8oDS>JDV}P!D$4y;4{2So$C1{)&oS|xko{1oVEGZwn&FM5nu==i>t`B zWc(JWL4MmE{>-V}4oTQ9tsp!K?*(TBTcv0@LBx;ez0*HAlQ3xOc->L7prk^=?(*i( z*^o0AILh+Xp(119$(0x{-@ZYl)CL_{kN*?K@1S6`kvEBGR9_4uB~Yl~a-~1+@#o3u zK`Vp+0#lNi{%m@)+@$(pos0r9Q@O6GtWy-7QWuz>S$RUC{|qJArUq+v9ZBkzKAr%c zUP;%ikA%Mo5;I=g4|Q*0#{2QUsbYDD?r+CD5uBDbT{DiW4;yGfs!V{>2S&N@rN8g852B*+GXi!RWA>1_qHSFl6YD zsLh+9>rUc7rT|!cqzgIY6Af4+1g@d60X3%x1z;6e)njH6a$&)@5%lg*o743^>Cp@g zY&-uk%fG1DjK7f#$advrqfRQ`>I+j)xu)uTrDJ;m_#5Dn-xA)5J!=J^^jW;M!fo!M z_TowM9Rm}ntCExN{SD^3=ERjS4?|MoEMX!5n)(Ci%e5_^dCdsj!TUMNJ*nuSZ^_YX zsFC!l<^lSHBe+Nfc34&cEA5+3GnMAcV8#rja|$A1C6+Yn;hBOG(*x@F*M>4-b)~o2 z{;T4eHyyw=Tx<&eOopdbRBh)!Gq37B@+NOgKdS0RZ;j{IY_%?IQXkXW8kM=#a&{yfthF&-}4DGZpLkCsH$f85| z53+^~&(XJ%;)vDBN_8?WLVH)SI#4SaqZ#Aa%(@z|~viHf1`hDa$efP>%jIZ9sqs|G^wltezw zpzx;+@~ODILZ(1b49)37%lantk7AkEp+8FS*Ns6jC75`LEHMq3($v`-9{BloM&JA+Rq%KK z7Lw8khV3`5Xip^4q>w3V;IDPeA4dB6yX{ftO~mIAmXV<@R5`kTQ0f)3CRXHYhs*t0 z=`o2+r4DDo_$TP2h#E)An~aDVJ zfpa?BLEBFEQ&3y9p)g!D3>n4;g4IVy6Skp`Qov>=LVmGFIvM@zT_o5P7ec_r5+;8X zi)G7BEA))K@SU*zoS=;7a;xtmLn!C?ddRnV>i-?Q$RgC|cLjrd7X8GI{W;qw*`eHX z=8`tVyx}wwQz#%7*61SM4!8ds3Ur8OHaahY$NhE#kFj)=_7T4h{{J^e7{C|fIl%@a z2lGuDko_Np!$mMtJKVw`>3>{tuH=bE&Ki)h(EbYy>L*f1t%c+J4|D$h_*AR9j$1|Y zztNW|_QW~Geo@{&|Ht>LpK4h;8YO!E8wOV;1V?mL5;~{&*Rtgk3msZ&(GnIQLBF~r^F#@3H$7Ibp7i_vK)eIrpOg# zjr?m_m;+JE{&MPj$kPOWDuTgJm^D~OF5_Rz_V1tg=zb|S5#GOU{C@^0`YrI`%hoj( zmju&jR-o(MH$=2Y$*Q4%bams_Sby(F${HJ|ujNY#w_1CX8wKCpUDn@~7@ytsE9YZq zUy}p)iyd{a)wrz!2xRTbQ=G7+Wj^6eavx!5eyH9V=15;>KVK68;o6(>sKF_0PBG~B z0j957IkuNa+^Bgo8wYxQZBEIv0)@E(Qc)BQ@I5xRGW^}2(k%`S4(!275;|>MHU$L* zha`)5=XYE+IzzOAZN90aw!-tX-so16r}Zh9>c(>QF@i0Wi_GanVlxJk{+u<=qmuO5-e&ih_W>N!l6d@QS|;N|$f zoX(%+ zn#Xd}xa5wiZF<{{P|@VEO6~q)NWVc-z+v!1xzCu~m0lo!f0< zkz;$g_5$n9eLWh#`uVzEjZPUmxD!n!5kY?x5$i4@md7Imji(g>!JgNx1W|cMeiN&D z`R8kn98r3#qThrL;yIiCL@b>R@DcxqHShE7l_#?D1kSv4MXq?PD3|h(p&yqY|0*82 z{@@7CuAoSWZ}59Vy^5ahIfy)BhRD2H&T3%9Y04~1q8+M@7u*TcrM=Z%uW7V{WCX|E zjQkpG%2(VejVG!+nBa;7FM(gq$KEVzt4nSC3=Lg;I+uwoB?(yFs*2bg^|#JPrU?9; zb3HdHB7s~ z;reA&zkiFH(~CIzPLG_zlh+@?^>Tn3)zxR~zJInmQPLJV zB+{OW3`4+@87cUF^&uwEs0@3>>3MH23j9rs*=~%A}B&d#>I*JLtH22aHBe*X{Wen z%iEbK2A-M!(f=G<5UCvkfVG7 zIjMx3n-~u0Vv)<$#!Y##aA9j2YwGFUj^#U?r(@^{C`#o^b*ho00pCw#$%z<7myP%u2HfOTj+4o(@j3DU!BYs zbnX=98O?u2z>l}Vu_M3JlhLT@v(E#Y>7h%{f$#x9mgbA3K3LEh(j$GUR965D0GU0X zK?e@zHAVTlBGeM!D<)PeVld)PVW}A;^6DK2^JPP1Udv^vzCH>xAOiTQ;<*E0c8yfC zA_)kgZXw3JaQzE14!`BZujGMNgA^lyXV63nAjFrpl>Hmp_KDN(?0)97Z*+o^SZ@6Y zPb5oeTC6eR79+S^?GOt9G)NQTKzm0!RBn?3X@M$zfSg5{*I3ry zzB6rJoHLi&K*s}(*Yl>o0#)sM(Qa2N5;|TvA~{*m`hjJ~a*3URldn$OqSJ*ao2dNyg`*hks_#q0Gk z{1d->g9aRY&KtcZU=mUu`etFpviaUYNKX6pDVr@5pL>38ywl>eK@Ul3Q|-Xf%oxfq zz2e>5XHwJtMqVu`XM5#k8YjQ*BP1u>j6QiW3-gqt)!e2pvw>2-^hi0>?xwSAOuBt^ zMiY^JTVD+5;lxwGDw^2G$e&6@oa4xMI-fOJyHW_*#7f+($M_!Vj-YEAOcIL;wV#Od zd9kKCeKqjfh?DXZ4iX!uqwofp1L9pif_eU0;qdPFvgF$$*>94QgKYhLqaj8yAc5qY zAb4zuDC}ljWt~H_V`fdw`A@pv)Z?Lns+xMaCR@TKGLW6qNx`=45Iya4Dn|c}ciAa% zlgLIod@&=zWKZBoXDEH6(Xla#%6$uSM7lCXBzAN$x>fHJcaHngJPPOE1=nJ(1v8H& z1{VFIev;WVxG(@j>gQNxt&Bt-!>g!M&~|^BB5{BI$F~wB`zgKk4mLMK4PX&wkcFsl zi!6SQ*_*B2LI%e7(&xDMc4a+Yui;&-MaVRc$UH7^zW+ijPKtx+w%T_7Lw!*xy=SVrY_FnAQcRdtajXNW4zm|1{-?C4# zOXU>2mngvG2PfpC5C@CO7M*2>)@L!ksqauAy$o*Jxxh{u{O1K2Y1xLQx#aC-S~Y7O zUCmj(tK0rTHG!d0etS$d&tNl!tF<^x)=Awm((Z8R2$JNzocW?%w;iU(Q9Q!A<2s4= zyk=8CxL@*zcoqvlfVx7SRYu-|L00i7CwF(E{BF%b866e99c0QrdM+H<`; zPG-CPro+bKd0-&U0(DwR4^~(2kT@cx#!~|@PitA>^P=>YB%!FEW81a8p;$qPlYfo9 zcbM_Inht7Hp2SVtcJjRI1=o>=6vx)tp{eTu?xvEp+p;;P9ADn}LQqmdq2UnjGpZlr z_zE<^`_*5D3CqvKWM`zOKlJ=WNO35N{Iw8?13Nq?8XH`z`*6{j>K?Bg#ilBrR(Dtb zhwgcTtsIvGip-aho;$IiF*NyGyGi-Ph?g3{f*cB zcSCPum*O*kqy=u6X1IVBLLYc5Kxq)CAROrri%u)z%=q0pRzVxFsG*W;g2HK~<`T+~ z$xTBGbnE79I5Mt?pk7asMa{G_b1o5Q`2ph0?6B;6bpeGfPXQ>v-Q<+?ntSq^Af9h- z$ZS4lVHYP-_<_qme&el>6Tp=G>{BY#`+GUXo8Sf7%|-}`UrJ+t7Dn> zW03)1PSXj*oks~uFQJ;`1CLO8U+iuiG}~WYOyA z6L_`fDUdd}NO=u|fh2?u{+ZV>WP`T+xlvmvex3 z(_GlQF9p?lzM~gQYS&RxW!wD~=e@6;e&q%xh~Et$IL`JTL|J?Mtm{o{nj7oMzP&iG zvDd)xt84d#cZwKqN#*%ly9r>#fIkjE z$*Tl$i1dt{a~a@jp}ailp}W#O)Jzzs3zzB)#=8PHcM-n3Hs5~I)E2*C5#2$MDstoX z`yX46JFwvk6#$zo;VhA5?}2H_RKZWtM-dIk4#nlIjZZN4-p%ecU>QOF4qXQ>4;SZY zeD*635h|ja$(NJw8Q36@jKvU@W3zM4LH;0O_jCoUg-T*BHCSG2N7Q!&phy;Ym20<1 zD>9c`ww|RYnnz*$YK0$dkcyw_h-{6>EM995mtB0=xL86!81{3Bs{f^e$dq3@%L_scjg`5WIbS%=q%UcmfBFs+-wGQ3y!PN-d1 zEo0^M_S_{c__?#u^v8h<2~YowYGT0Ur7F^=n=UgE1+;Hgz87J|qtzezK2?bic-$a6 zNjgaI)co43Im0c3>lbN#UHnZDE{!6BjK!^=yEHh~*gWntbtGH)J7<)xc107gvC_!pcxW$3EvI3K8r zL=T`J#HsyG=@z3Zd@^WVD+~$5jn{sydJS6%raMF;smLyWI?LT7{4Eb2;7`u>{L_f4 zrBYEZk(9wivZ(Z`B-r;K9ZqU*&UomtM7dwSNh>aE>~BHjv9!=@&J;>qdGO(SUrY-b z$F7M^@f%vNU-O7u|Naii2SA1|#L8&H%+Gz4Q>0MZe*qSqHpk}GuU7`8@^*0Yo3pL6l=e499Wt(rA3Azy`kGg zr*{5fWkOV5Kc!0P)wcKh+N?E_2kbtfB4DT@IudM^Y*Yd2bRIAAvqA&eA>vd z{bwGqVE%!?6+=HL}y&kXnhyuZ&X3PIZ36xy@!PqPwJ<@T^-LOu0b$_+&6WPv! zRnS3C=e16Nmw0}1)%Lh}fKbaH1T5cl-JmzIPzi%QCN$r8`7r*4%#mzmJV_moLnCil z)3+aL=WGtAP5clBBmb6&o?mUIok0zIWlh87fzqBd6(|~rqn|-tH>rW=aT`L6lZb9d_-^f0gqd_0fquML!WfdWD z@>!2Nj)i?BJ;iQ4D7=0tZW;-ux-gnjem2Z^28-|j;YlbKY53+9jl0Fa*@srExhWKv z?kX?CN5k6wYKfREbBK*MhMP6MYrRb6@V)XCIb0V&`(hU7Lb%K6vz@7}{y8n4`q0uJ z-a_RuPO(Hgiv*P1#1xS|NeJUwCIRyq6e6DuOigedcn5UwD`>;vk^~$X31Ji@CkYP#7Usy*bT&C~o_8Pkn zDPP1{7E;wX8f{Vei{72uR`vxNVO;3FwC@IMt2qUBD-XDhvX7pL91fl>oLi+|)oL_r zB*4#&L@q+C7QSKgxZT|1>Za?^U0mYc<6C)a;kf@2|Gg3eseXA;A1#46Ss` zPXzAE13nX^}+5CW<8$~-HAwEj@O(OtZJmA)ST#_XfpwfvKShapl=l8 zJaz=S9KM8p?RkT+Qv}fXgE+l9KL`KgdaN2F+flN#9ZdE9Iy__)24vD-#?@G3Jf zo?kVe4ZBj=|Bj+Vf!&lQu49=+!lX?*zQyk&EDvS%^)nG6M#P!&-{<61kb0;;a6%gw zTm~9khsAmVZ9x2ozfd5~!g5nxk|AfP_+pr&`A97M0lu#Olxsq^=?zzlKIQP$0UoJp zm?;+g@EJ$RUz*gCzixrTLxSK+XCkR9pT)9$<%LM{!8IM<55#+5>tPWLl#NfYCu=%_E`TAO6R`+<_;sIb*Q(KYT&B(J~B1+o6@Trg7-d807 z{v}G*CVoATx?yTn_DN3|sc`<>p)E4ETi~UQ3S(c4p>XN9DR3JP$UQR+ZfI5@4MBqy zoZ;YdiPq!4=Tlgr^f&Si^cYU!DW9NyTw>_c#zrPK`q%^Y%76FrB5S`%zOCT3IGeD zjX(BNM8JMN1sG<5X#~n&0IskK04t6uvul&j^BCwcYmv}!cx!gV1?AH~v2&j>#ds8v zA+tGCHHUzckaGB7h?8h*JRh=J7vB=XB2@!Hh@hjWvOoy0Iv7t;iS0)KHRQw-Nx~IW z29Vz01*6~|7wJrV6P>|#=`aL95gx2gRz7Q7Ad|cW!gS#BWWGG0`D<$4I%9%h&BtKo zD(TR=bu(GwiXMVznUvz63-;#g9Oq0hQ3T;+yz(Tf_5G|FUsksWEq)nJtFCdgv((Kk zKWx4tpR5u(yZdgM)nCHHyuevlvn72DF4hu#t*oja!qDA7x|^q=aP@b`(F1_EP zC3TDfOolsRyo=+WH*Bq1171;mx!fsRPH$>#Xp3-do2n|e*-8oMcNX7S!a#%QHGbg} z2h=L9;J3KXwv#B;c26&D_qX1cTRFDWJ?2xnY%u?PS7HiLW(PM`_gJPhW{DUc;IRwH z+;)X6K5C3SY`$Y|8tvX{Y;D@#?$1{{!xf4-YMj1z>*QK;Mh6=1pI|IN$V{BOU1s`X z*hyfb`%4mrJz1fiaXjf|ZQkm0yY>B<%BnksSY$$42$|y#5F(lZ5N7$E@pvWU5x?(k zmkD5Xm-%{*Bn-ueb?$w$0Tcy9`zN zy(`C^>2DkSAs*e+%d3-F zG!+dt(%(aI+&T~GcAjl~5_h~qEo8nbK}+&`L%T{EEih0Z7w(dKpgP+2QD`>Y~ za5!b;VRW?~qwc*$RZSHA9fLRMMMvwgd$(8c2*1e(_7Z#vHUP%oIWX3M2$NfP1A@JOBh!Jptf7 zudwBztiHek<16C^A*?x7sey~T%#Q9LTdY+tb31NQj{X-Y=y6jl(_b0XF}=mom-FrLg!=Jl8T_JXurMWgNh(C+iv z6P1d)@{lECy@6I#2nrgc4U62WwLG!2Y;rcXo|aU6P3EX!_9q9^=Ro;2)ae{bA>Ccc z4P~^7Q=hBPEgnmn&#NO&^Bh*sD&u|clE|&`9CP+t4yMeqia9J66Qt4q_&D1-DA?)* zN2&NcD2P1lW25%}Oqr1^I?%NFK~yI*3)|( z=m-~x3V8Ix*GeLU1tnp+QniwA_4sQHdI~pfCYZjYBh?9V^YI57CqW7`wAXh1l`rCz zgD))9xA~4`?IGwwFK6vE7LkA3jRTM$FQ+dUiS?02lZ^=fD%fK~lXj>3Emyo6(^JK_ zsQ?({Lop;q)|j-~34CUX?s>;mYx&2%&UrxB4IduBAfaAP(g<>q;dQa(%;E8iUYf&C-ob7H#zQ4spO^Ru$IoJ)^j-vw|? z#96I$VoBZfL9HVf@1@Kgy@--93`=Bj_orjy5J@lh4;3Y>E!X7eS`C$$8Ku`!-VTN4 zE7N_j0zQA4T~xix$vR`B&@+5ovG2$*3z?gUl!s`-=c(@D<)=smtM!378gU=2{HBMO z{N8f)W_c{GHa_}t(RuSJp0dODUG+xWGDe1W_aw5Dr@WPX^B-?x-2?c9H+Qfy-s&P& zN)VHUMZU&fdja4Xh}OM!>B4zth?2-^U(LMxU4`Ka*zYxzQx-WbBn-Cx+nzc! zKxjpm$mENXig4m*=vg4k&rl(K0ztqMxT3roiTJ}(1*SPmnT68Uea%`)5lGmsuQ#8J z*Cvdo{PC7WI_n)PD8L#fRCie*&YfqCg(~icCUwKkqs!KNTcFJ&r2*t?WnuUbmC&?B*ySYVbZu@>^!heulo2}A1S_jt?8k(Ze(1Cj)H+((+T>%DL0K8ADnUd|0&EV;2}NWrFEhpKUCv$d93x?`+g)!ubdEXnQQGv@@yb$xQ7-?EY13?S%RU3$7c66IU%{N2twVWyhU`|z9(pu8m z_iqkYj+ONi9wsyPY%kWqnqc)CT_t$S5S|uQiG*bL!@P9`1Iz#);wW#{nrF>a0!pwO zZ=#<43SSSVvkoL6VzLd}P*y0l`LqbZYPUi1qdZ&nEk?s~^1r{BrkzQ`I5SsEI#pIc zbY6e_n{^3;yA(B$t-bp$yKfjtVc(nhhoYaLIo>FW+1+uSZ_vX{iq|~+&i07471m-t z)EhmrGKLK_*nYlt0{QUj6RuEiILh;pz#7r56jS)YCi`JS)3EmRM~qnRaZ&mC=ije& zb}5wYq)hx5hpv~)9covfnSSQ2WJh8U#Oq1@`rvDn-yPJzP{~W^k75bP!O$2-DZ1_c z-IH;?lwL7dre&d3N5EU6g?zlj)4IEPcUp`g3aznjX={4D`1tZx1vIu?Cp<{A-`uzq#1A`r|s)Us=>`qsv z`ZQT%l=_9Gh2PA3hPeUQ(aoDNigRXR4*M{SPFsQWtf6ls01X&&C6Ru$YD(M9b1L3l z11L#F4$^zOeNte=ZB&rWpQ_WDI{=SQnBVpDvzp2wVXM6#KLMncHXQ{$xqX>@nY~up zVIaZxR%-kJiC1?ON{OX>;?>OA9V{etnK~wHibW=vP2p}Gf5oVsz^@Ld-B8VFA#Z~i z__3UovTuCU{qz?ls5J<63*{bLi;82e7V$oOFX)g@BMYMXe`;*GlXA@R`N!&kNB=STd!SfV)j>3PDb)N z*0~PiZKYr5G=)qzEt`?$6}ZwSLh5``6%snDOgMijM#)`r#dqQK#5+j*Y@eZDBS=pHq7Q0bkXY8bJN#E#N zPpMz;mk+Q+sY}NAH-8|Y=`Yk19qtkwbkOBF{FyR&|prex`@)LJYZ<~s+Ir|w zTv}TRB~PocFGG*+vg* zHvIVBO5dwW>MB-Mv@*`FKC5_~lE?sW_WN1v4(nVrO+UXgrZTD;%5RnPA<8@7?lK;# z+g}og?lFoBJGu?Dkx|TTE8lYDlt;Kk5~@c-mKu7e(^2bHRa0R&c+kY4in*0sglMp$ z>KMjsg-mY06v9ae=NRVSK|NxPLCWIz78WT_eWV8p-t0~uCw~jpY`9v;BnJ*AhzJ0! zO0{l)TSd|R3sH=q{I}?-URo{V;_SG!IpY|Xwr3;~vD6vy`GJc0N_mVat_J~cc>an> zY{BV_X17c{eav-L&0JSsN)&3iL@8U{jO*uZe$zx)8>Z%$Ew@Pi$0S!PbfSU`BBsx= z8QP3g$}Sbi<=fTHeILT-P5K)+knl79Yg63MtyG@i9P=^-$xa|^+6g%4u zWns;{V>(Bwl26~Cfp&z= zZdbLP8~rTAI~Tc@L_4oxg_ZiSzq}<+Q;wLOLjESjaq6CPSVD**kaE%);WRSIk{8e| z%+(4x*t13Z*>aGFN=RelGHB^ZS-F^0jr)QP&71a}%+26^)x4jy8sUN51jpnd=-nU( zB+7`e_a%_YcUHTq1xntx`r2Dy^*(#2b6m>Ea{9o=pgKg{9^ltyuBCn|?WNm6{+2-v zr`HfgQTv3T=fjt6zOrwLvO?r*$8QeZbf=Bh*ohgF)CTl^C{1&ee-?Jw9Q+NiC-@W=7Dr(%=4lml9z_ z5-OVbk6SCJ=mPOKyG80wzM$p3$71`?`}mZ4@@`RQ_ju(hC3pEbV#3&-88$e(wuU{v z|G@I*9KlI;8VgHe<@oIFKQDmV9_N8t)Hp+}PH~tS$+2p)^S6}GdqztGB=nrI>~7a` zj7HNN3E0jME;qRl<>?3OIzGF9bQfbaN-9(-%MZ$Z5ncqL|Ep| z?O*8i38fn5#J>n?{1%I3<8ah13`hM9?Lv}{P9};S@nu*K@QxwY9_}8>SJ4lxns>a4 zPHS83cevGCZu(g8tnd0YrQkSx#pqM};cZj!B z?s%R!XTwy>BJJeJtwzSta%0CYzlQrFuSI_Mou2{ zlwp&o6?n|y`6TD?`x9Wa21qH~rw1`9(xTpqbMk91~#uQn<1m9~m1R zwm$hGWqs}#4N>Sgl~29{}YkA9}^5Z8%s8jk5< z_2sq1qn@&H8OqS!6pvT2IhB*hKf)Ku5QhxSeCZ8h_l_lyk@!p?;?#3sgtuWbl<$H8 zrl62Wga3hO;~Ldfpt|6atNJx;j*fMVC{*Jl3|!@E?ZVCC0+sF1%pms`S9wEE7Gf6F zhes{VPuBbF{`cK+X-=>ATXtl9M|(1ya>Y^I-?uNTIBe4@bt$#{x7I$~o0x1&Qic{PjihFN*&$;&>Bs-Hm zvu3@|v)cFDB5S)r5ADNx!!@9}b`?l=oFvRcg)lMEZ6C)(|1_u&TO7o|%944`Ow#FR zFPLiPEV{s_6&vNuNs_12YF~DI5#X#y_aSJS_6SPcxc}b9eb|PD6r$Nc7s^&5UW9&j2~C%70Oxv3&fp?k)i#%wCDwoO8(%mP;=5k)J}f#Fje__vF5e9D<(YctXm;z zYwB&G)h@xTL0xnG8J=(ThY>O_%ByePO*V4_?q;>sZw{YNy4ox9_;f@gwhhh7<4TV- zq|Rphfr`T-B^(L&S&ICClcE=R{khALRmzm<^tDhv#_eBx4NWO3Sl(vjJdm#Eina$S z8n6Rbew@NvHrPjVsXrXY#dYDCpcI#bu587;=cn^kYa4?|$Cu&)jw#gTG*rO2?=Fe( z=|$i1%YAmH%h_!rC`m=SB|+F$;wjn*JIUJUhnA?J5)99G8Qw!(StbZYuTv$uXKJZ= zIy?S65-Q@ln_{A)LQ(y`LKFi(735_22cAjTUY&fmu#07FSeQQcuOFM+5Z|MUy7o}U z{M|7*;)?Q1(i(oCv1*k+Q?)P=q)W&eANKtJg*2#)8lOkGoJ(e7B5(#XyM^RJW+-5@ zX^qJr{X+qT`L|Qk3Y|&n|8-51oDw|=%il*zrN2odbb_~1QfRIgQMhySzD`6`_oP_| zQ5!_+nXT$nEUQ{l-LHCa^F$F!EXs#3Ut=PCuE#~*OQ6gaKfyP^=b(8fiyzyx)^QAv z+b**)pe2Q#d3pEv`~xn0cBwwQun?v-P0QENmyBuQmH!u&JVlp{YBWrwos}=U-ALZPLDv%d>WsZC*ii1)F06Km+T)=3ar7J#P=$y%W_KWEeZR7@M%!H zA0His~PeVHE5{lVKo!Wv7X#nT2BNTHGreiTq6lSjs!mZA%wjg7A0Xq@?>p z@NsB>wdJeoVc-1glnh>boDSt!nj5$p^p|R+-p(szB2R4qh!Jf3zCL~WBDQ3V!LP;R z-_!EgeIq}KfT6NvLnh2q(rvjv4s`E2?-H&iNwrWXz8WGkQZBvmy))4hk!U;|lMfGh zrF$})T?@@75Z{AmxN<3Zof{%5!^=rTrPeCAPOXz7B~(L9;NdstwoO!FxDNy`0E?|A zq3I*nv>NJWea|@VcL=P zZ`N6bRTAq;1J8?AaSzmEf@=(aezt(r0wG$Oe8StaG7A*{03mF2zE9JVOuXk&JS)Tl zIIw0@;kAQ~*(BzeygSTY%xs3hG$vo&6l#%-UzC(QDcv{#wpDqP843Yg?~N!RFkrTv zgUyLjN6YS}9?XxBK)_nRSspd$+#(FF_&%ykl3sV_F>f$fsXjQec`&W;=Eg%lMoIh0 z11>$eTtN9ab}Mf5_Zdz}oj#G-u16BGYSuk*I>knCWe7_AdAGPb=2#Qa+{t7#vJVf! z%ne4Ddlj$l{#-t->&sxovHDVmnG60X`Nd01%L#~~RkWGluvT8Ct*+;-xZZuE*TIu8 z;xWG+w~(&KoJcEZU(e>Z2vo@W_z}ieYmAG`!C{)Ps0RJx$Y+@*XdaF<@j9|16VaS! zsQP}$;Ik3{#@WSZVYtMFAT5AC9q#zfnuSyBAWzI?+-DO-_;iRt+jP;`Ce26s>~9n+ z?#JLXjd(i+tQ{*=pKl#xgq|M@7r9l!$1Oy4vgnMF@abGwIo*1{VVK&4k2?vKM;{{r zEX5=Ks6gK7jI}!^MvJPZ1;GAuh*emm?9m}dJHao_)K(K6V4*?79&Q}5=nY#!rwbd! zIEt6S{qvS9NYwT@wdtRB$4GX}BHlO&s^WA~oS-jkWQKUiIPq}n<3iy_+3TOz3M0jHw)FYDWVgetFThWIWr(A26RC1c@6naU` zWx7a`)f=1w2|SKAajbXPi1NnTHol5Eo_YRKs_6`9=%T25DelAI%jW%XQc1ibZ{tAW zYU=k#?hd}aJnRB;WJ0lB(GEWf>c3?}pl*EOUdT2Bz*@W}d!vmE5EqeHMvw$+>X#Z1 z2b&K^$OVi}3i5S7Zbh8QFEuf%=bS_$E0+FvbdY)T=UkZSCJX0dsf3j#&M)A11uk=R zIso9gyZP&HB?2^YdfRhLCWSCjCdXk*2`(FB5SHU^6eQ`{bgj88b~u2@3Dxg!Lf1VT zjo*Fdn=B8-j_!kkDAZ;Lj`hAzVeo5;n*QFKQ&U7u<56>PO5hc^UvlhhNsQy;LJ;ll#Q&tCc?8-|3gsD2N4wiK2g3O z7hZ4s4W3#&dUkrN+gy`~+@I1ANflh5E>lsh!uQz*q@{MuT$&dPa+UuqkQnMx5iK<8 z$S_#G!xo|oh_1x!U)mTPk|8Bk(!q!%bLluNQ3_Kj@pP_G6`T`lx%NPf{j1&bhT8L^ zAtE-yU|}&=pePWzj_ch%uc--~rNma3i&Ig<@Akom{Z9I&e!CVvKRAeY_MVBK z1&ow(*v-xovdVl{u9^!H@d#Sb3aB8P`6q;<=qHL6gbVuw_22dh%B> zh+(bEbu3|llbL_P`q%tCQDA-bYCZ3|ZW5Hb9KUoJM!N6_T3yt%3H#;bhwzXubv6m2 zbylPLhV&`5%fV2^CbpME?~^pUUQM!1MD=$GP`wUtmYEI1J0y^8Sq$_3aW;9#l9pEw zNgfhiCu4bCz(q1=UjKEAqgYH0@}hHBXCA>sncx4vTuTxJt89S~ussV1}tw30Ch zUf$_-xBi7d?!F@*Y9rW#T*4L@pcdoAC1%J{YrBSz&UNG7w zizxNJ`<38YGg8+)55KHyW_$y4(k9H4?q^(D-7<7pN)+SJvlZiV(Ca4+A!Eo>>>jUf zSsu{=z365!G9rsx>bTZtvNzjW7Fwd@)ZYjlv5*ed8DU~+o2S|4Wn+`i7&vAvr%rll z--EntCWm)z?;M9@w-}$L6bM$^>OTBB?uWmV_DiC~S0BynkrLna_x?Tq?to@6}I4f&Lg0{uOU7)9~#Dk!T;LO4%$+3joC z8?2ilGlXjuD=u4a;}XYR1No^FJaLVfl~!)Ci^WD{!Yn zXDmR?39 zC=T(fNe;R@*04Hq-;%)yt|!zh(PA-XX_`-fpLOOFe94<}lmf@NtUoG2Oi~0IOM7Xx zoNjHX-hFPmlVQuRRa7SibZ(1(I4T! zXg9v!u_&SNvr-ABdaLjQ(4z~^RkQ!Rc*shX@)sg|Dob-Iy;)HAdGT9fb@r`>23|Wt z0+qSjizcb9n6kytsiSO;qpbAaC4Wyo0nXQvScdJai{){(pgTr8+FbHyYa#_s-*sy9 zZNc?!$|a8s28mZEH^Z_1=`87FA*jf|tuKSJFnJ&fRYJhCn8K^G@;>4y%s@slX| z10-Covbk{kV3K&qvSF8xe(~2)brtjKen6QIQ53>mLPd=>A&(*A(;s40$h4aQ&`cV~ zoX=ai*YctWqEh{{9aKlNFGpqb)9IjI(HFklamjni{K)gk%aqF1q`!JvkNphZ4@4qN zk+AbFDNsdUE4Pp89DV~|`ql)YxNbU#I&i;Y#E2Bp!cpTUlc~!I)?^Qtt^<`oqK7!Zm5lPWmJvh6TPJ|wv1wa+bSCK z=D)Rt58n<64W(XZb1tJ*TM110HH$O0mg$&)2l0ipX_`h{XxOhM2!Y>hs+djzw=m1$ z!9?~89#iN}{(!iUiD%AP7skTEKZgDSjEupU05Hw<{xWZm*b<~=wm0V;UqUZ6Yqt

lJ4VbtH}AC}euslm=Xl3!6mb1c7Lx0sn1LSj2n(rFU1x3gfI3 zO+*;Bq=9$gc5~w4PDz$yUM;F5=ng!5o8s69g2dEE{S)3bv#pbA>BJD}xKAIEH*C&* z7(HPhjLsP;%qW-7Xcy%hh85bMLaYEo!<%9rN8nm%rf5K?p4F`HFhG>%Hk*y2N%y}p zC9?#DOO{`>j6kcT9}@yU5gc4Z^?!28Jhr8FS;1eTx@#6qKzam-r?)?>IRLYfRi%J5 z+SJ928ziW?nmvw_`td8ZajN1F0SH&OmvxJB$!-XgR1UP+&t8?-wNQn)<`eZVm;^lR zn$Cqi;$_+irWlC1gZ8dxKM>(LGhkrZHQ`%^k>T<4+8A8z5F)%Q(;C^CD zkkKe@Ihi4V7h$_J@{SCIiZJI3=>e+dd|NY4!eA?-41o`^>(4E^uym)EC0hiTkV3uR zj6;PXws7;uP8Vj znpM@O=p>6c%-_uWV(KP)NDtF76G$O94_|nT%PFW|5Mq1Lx)jaKA?(nOct}JggoQT5 zJ@>w)M5U#NI8Nlt-k6vP?(_K}NQ7c+12`z|D+Vva{`YefBle{80lOqbLD=B3kWa=p zHU0WOdx#bP#)2E3V;E5Kq%rFbQ1#4EGeg~Sfbv-YdT83>1?GUb;PP0F&0CbRJJy!Y zXvuYQ7`!yL{I8MLziHxrdIvGaK+otUdYHf{BX5SKn8BkzHFer6$y!$oOD$kQW~Es{v`Tj$*=WZY2iKti-CS`0p=JJ?vNiPL8l=cVU- znNEr|$U zrd$UrokcFbI|y}OUuDVs8A zh%2%Y$ovjzcuy++zn`zFPVK0)|8$+PqC=8R*GyAs`)>hOk8ZfRLz)!|MZ$_+Jqu|xJGCPQ{BLSoS`-rkiT$GB&RC>?Fy00ZSK%O4LX?FU4#^T}{gnwLwpH7!pPUOA&*0kJ9O|lquZw(G8|7 zzbUv>DTa%%%N5y-ldcHMG=3VNqZ7?gvd37n{OU}BtPp-n!p|`G{-IgOWsqQAb68e^ z<)7=iv-!h< zQfZkEW~Hk55pV4h71tHCG;x(t332TQNQueNAJtyQ^qS0K!q#%?cp`blqte-!sPHkIfo-7p*K9oN+Z573J`%PN zM>j*ntCXN`BY3Xw&!;IvBBbkh@O)&;>qSiFM7+5&=%`a-g=S03G`9`2VroUdNvhsZ z@0Te$TOL=61(ro`Q_{Kri@M8h++&9ewm5EmwQZDN-*_O(w zO1VI31P4gO{XLLhfh6o0y@h5_>l^gLQuF!&ry?5O<^Pykwy5Lb@%lk<#wyYgb+1Ex-yh0NzFCPe z6deb4H}r+s6hOu7LNe$2$#&f!{9rgnhUPN#mIZ$QTCm)O%*^3s|FB@TkRao)!*voR z6Egt66{x*!RABRdrx{`>>ROOV|760?GrM+ad0GXc<(f{^!9J{&?nPPVO%%H9+M*cl zz!N{=b!k=F-7#6uupQbgh3pJ-Cm>=A}p^-aS|&zV5Ul#+d&xm$1%~ z@s=U~O@aTPI{O5LrlzJ@mmiL!l5LZcPqR2X>Xr*uV>O_gIqlo=REH#FN|Fll+(lIM zjVm%!kwd{84f?OGC^>=SY7I%funf#-_Y^5#2bF`c*5eT$<`i41l|sx?AJCC`MIgRf zFKW0G@l^D3w$`D5@r);v`6T1tOUTAEEGVLnWA~S$#(N1n_|1`TT;G_H6k-tz!=hxp zCUM#p)OCE8*KY})SrDjA&4pW|N@|j*B0hPlF0^O?6nBGWZ&&T2g)YL^S57`EsGmG-R+!W4oFYoYPweUB) zP((*N_Q2B4nved+An2L!GGcce9;>HUks#3y+uHjKDhFdYqP*%$EI(<9q4AA;&eHhU z<7&KSG**1xXSDm18T)LYRKTd2Pnjj&zgidt@nOFrb_?t@HEigglQ+%;47BUcvLpOW zSFbqo9}`d<*$?ikUDNGb2QP@g1q%XN5?&qrt7D{jOfAl0)*JV;8c~Q06qe@EfbG{` zh|?ZE@KFK(Ga~>Hoobh#AJF^M&V)Tk2m}NE43PQqfF)=b5`|f)T$9t|i9Yc!Ie`axYi>l&B^2Z$NSzRy zG5Bsso6&{aN~*y8=Ff2K#KDS!4IGW6#!PLLxLd*n4luxE5uPphUt5V~pQbr>L@QOI z`C0d5BLRxMl*Ff7)r3p%; z-TaJ&$^}HLbkHAh5@Pv~$P85A*TO-EhTn1sma)eDO35?}=;H?*wn;2fPKWcv=8T~U z{DxK@dFHF$>)c#Zk$ZtoC!b435F(er)L-7h?VY9``>mzbo-aMK1=~t zgxRbC5FXRt{5q0_SgDLGKU>s4(ghcu(h~dLo*e3w5hs}BO+omX zD{wnGBBWZa;+#TBisx;tf~KM8O2t)$+ziL-pO33w)MbKxm5)^!|4B${UE#mg>IEKM zE#pMTcuOX}gP`U;xjY13m1zT~ch} z(|!&F@>q^%w=Fq%b2~HpfdkIr|L2kaH!A_kIl!FCh=Ftfzo)MGxSMiZCkHMQ9;SVO zcU>QNxQZdMNh3n_OvfTTb5eiX~PSYc5SSq+HB%L7!Y(KAnvh?*+ zAjs=%3@fh~+R*HCGpYHsijXk!w7L$tH5K;(`Z3F zU%sFm-%O8In|;y9cs2q~3Wu^5F<_z>0T~7ij2SqCFQVt2V^HLcSeUYFw7C@cUjgA| zi4i!X$h;FNk)95TZrV3YBre?M)~b+8>!-JPH3Kq~jUZ2+rP(lcM%&g^FE2n`eM!mM zlZYou8hPgK#V@&b&j?|E8Ktdb<*W(!Xf|`N@%l>1tBf2M$-Z-O)+`Gf8r=5KR7?>H zRzh}}+qdG1PL=1xN-OOOt}nc(?j^G1ZhMp!X7LR;ll!4k&2Q7;FG@w}%@;ZZCG*&= ztr8|S#H^tM2m`(AEe^Ya4!p({9)w#J)|}M*Ec*|Oq#cHo+=wF_A4bAuzFx@kEX=pP zg@3_4hfBJ1M!pz9Oj4qgTnurB7gg}XV*DD8 zsC|8BJtj~=s+x>+{!`i_~-bfuc)S@Ie9E>tj>u6Cm?7v^Q;RS~LSf|H3TQ6s-TY9ZA`rz;|Dl zztb0I0N?*6A0g@HHCRh`t?tI@5<S?ve~#%LnrGxBCSeZ7R~SwY|5 z={?ifD8oiHj&o{}kcFfyV*67sReDD{A~(C4Ywc%OqeqPuA?mx2Wnx6ozRb^f1986w z_u2bjT#9*i=;~5_1c%wbYVz)S%}@GamjSpQn|g4_hr_L-2?7P+jyYN*GXM0B4CEVX zM)KS~INmuVJP4$URJQEP%Xg7i$i|?O?=buI(cf9gyd%rT)=@?s5;Dqt{3wTcx7-*? z89hR=IJa0eudU_UaLFPWrLz{(pS3!)5xCqD6q$0>CGVSSyW_xGpavk7{PoxMD7@uZ271XPvkd1qKIeCBo-tlWWB-vBsZ)y;&{bb!tnty1MOIZMAI^e(8`|Z^R%hhy;n+ombKc0$!%{@d|8Clsos#pB{U_wzV z1bKiZ9JarM4xvu&#TgI9S|2SKl14aaLziUeLRSe>!>BECyv-3mhjIMJv-<;pIa~aX z6h$+`wdK9)wD}?zgQYFNjPbN3ijsDL{$e;uvrT1H1QiTvB%(2h&s^G2JP%t6l)PXZ zh;>Fokc<;sI{8+jD+Kd}&+mB@ZS;gh50f(-OW9xw>;QhQU)w;44EPmr@es(7cx@g2 z!+4ox2(lJJ@67#Naa)+^`8^PF48;GmH}B3b~^2<8IP>x+Du@^nWfIs zJU>Eo6$Xzq&gg*AN8GKorhPE0UPd!=L<`hi@t&O5W0DMG)0Ra#gNjYE9LQ zLL6L9#?~-Ceqk8>H9}ZMnPKAkf~HuHoRBc!nt0#_vFy6B7!nOA4ynj%DdvGOT1cw6 zCQ5|;nFk69Fr%dja6qgP+HL1HeyHfZ4P4rVUXYQ?pBhskA-_? z#!)3-1c2y7(DrXVOM+^8l)~N62&jm1h^z9oDWr!D9Abxa2qYm_MfEP$BFXO2+}%u0 zE|16ANgQ+jZL?rv!o&AqH;QVGjD1mnoQ!@B@CGp9Vh2*vAsr*0*h%OC=;*G}2-WgN z`nz@6NLynY*zyAgQlnHbyaL}LN_)q4*IFOLmwVY4JUXO)01=Gw6(0(Nk>7w~U`U8s zW%?F2fn4U;GK{HHfeE5B=3l(6k)lN|pr0&0iO~K`{0p`r-t$P?`c&?&NW0qjiB6D; z;YvPb=tyh(i9P%r&_e>%{~Os|sf+Ld1X@Z#2dzeHo;JXRz7TW=qPH5a>?)b(>L8 zQ8e%`0d3|CvM>O7o;7W4AXj}6pb+7s|0X4X0IJyI3T+D^+(?2VQqj?&30SNBlbgvn zMUIf+m)hM#fn0~~ki{7`FnJqDk>oSQb2t5;74*r5?-Fnvzp54@+R|v&&TjZ=UpZk$ z^J)JE9SkyRaNkT>XD@G4>QI%fnL~%JymF5?1IlB^|;1TZvcYk9y%-1{jI-+1mx@U1;uQ= zrumLQ6~+hJtb`K{=nn*g`4EXTss}GkB(&PuG!q86Mbf$0$yZIFh?~9hxJE3BHMvjr zKPS3drVo7^{mwp8OMrX&L8sd*k1d|mFh}FiR5kddANK-VNB9YL`R@8B+M8?IM98Pb zdUMKjWSI347}C2K+K54}Dcbu{gG{pO2`>tDu?{c8De(a@aR}Wui~+|%Cg;IM~Z z^Y%SlBtC!IGFLv_LB4Y}xUdBIdOidx)%JUzf` zLkK>|Vv_oSss8(v21Pc9kUgFcGII;4eM`H6y=H*v?IaL`8AU#O7H!y(KgG5JIvt4< z^7bdVuC{)f3FcGs%dEkX-6oD*H_O<#@oCU^DGwwBvjfWGV%gCEm>M=1fjQzksQ4Ro z!AY2IC@KKaUfKgBp}p9K5ba?UjePYQVIB4`pcG-|s^8a}8(}p`Uin2bXz++QE_phV z6%2u40xSZk=cb0l^HCpmS<(Z|45=-Xr3c}Bh^#7$7-;e z0B}0O|F8fn?c2BuxNBhc`)sG8LoV&())H!5>3WKo$K?F?@A4T{H^uC#*V4OP>24xy z)vk+5)Gf8-Y6?F1w(kGd@S{0y9m&ohb9kRTGf||#gmwLQw_+=0NY^gGZv)S22!ebT z7=4O`F_=?iaRNYONnOAD^SSPrpdqk>z^Q-ZXK)ugf$qR@ATk;@IelQ{YJv%1oEU4Q}`XB(-6fB7tza;;)m>yTT~OREY( z;qV#vk_%UU+Y*HUTd*~7%NeuhkQ+Ed2^~rU8~G@|6(!w>d&J*EA^-Ue-MUppB#>%C zgqNwI6Pkfb^d#LJ{_fIL^yDLsd1NCQHo?cfa@0D((1Fcr4Re%WarpE+$GKB|hjzkELj$m#@q`YK3}9p1?U&PRv@{x>r9t(EC5Tc(=V87V z`ZxAG;`g74kdf^{I&7rG@8t+cP>`v#bdZzj>3>P$Ctptcvf#s48%X--jCtwAR(SX6 zFSGBZs_lofY$MORwbeWS9RI{sareD3areo;KTiL~&QJKnci$It43 z-F$N$o=iX@V_3><1CwD0zCB0%hHqR2puCCHhmRt{CX+(8W8E0E!Nf<(3B=xzra-$Y zwElV(j;F;CZi5O4iJ0mdzz`w$k1=7SRcBlDv4P<1O3dctw&AYd>)9j|7AX(H9YVZo zPw6nuQ%05F*-s=^3|WZC5^|mW#jH_z#SQ1!J(U|X(K8AYX~a2Mg4n{)+EKF z1sxt)03vjt#rza&^UL-_yYztMXqR)�}P0s-O2X!SPu)HtuN(gEHY^=0Y8nE>ND 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 literal 0 HcmV?d00001 diff --git a/behavioral/mediator/images/mediator-rust-approach.jpg b/behavioral/mediator/images/mediator-rust-approach.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c16d1014d64d94dfed5391e3eb41dac426d622da GIT binary patch literal 45750 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 bu|%i{V-lr}Y^qh`q*hfJEh<9Q-~XEcC{Oy6 literal 0 HcmV?d00001 diff --git a/behavioral/mediator/images/problem.png b/behavioral/mediator/images/problem.png new file mode 100755 index 0000000000000000000000000000000000000000..568ea6ce78adb937a9503303ad0d3bcde362584d GIT binary patch literal 43873 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 z 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 literal 0 HcmV?d00001 diff --git a/behavioral/mediator/images/solution.png b/behavioral/mediator/images/solution.png new file mode 100755 index 0000000000000000000000000000000000000000..f4b745d6e285789e46aa007b672a5d55f6531ab7 GIT binary patch literal 42428 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 CgTa{q literal 0 HcmV?d00001 diff --git a/behavioral/mediator/Cargo.toml b/behavioral/mediator/mediator-rc-refcell/Cargo.toml similarity index 55% rename from behavioral/mediator/Cargo.toml rename to behavioral/mediator/mediator-rc-refcell/Cargo.toml index e0127d3..9d310a8 100644 --- a/behavioral/mediator/Cargo.toml +++ b/behavioral/mediator/mediator-rc-refcell/Cargo.toml @@ -1,8 +1,8 @@ [package] edition = "2021" -name = "mediator" +name = "mediator-rc-refcell" version = "0.1.0" [[bin]] -name = "mediator" +name = "mediator-rc-refcell" path = "main.rs" diff --git a/behavioral/mediator/mediator-rc-refcell/README.md b/behavioral/mediator/mediator-rc-refcell/README.md new file mode 100644 index 0000000..97fea52 --- /dev/null +++ b/behavioral/mediator/mediator-rc-refcell/README.md @@ -0,0 +1,27 @@ +# Mediator with `Rc>` + +## How To Run + +```bash +cargo run --bin mediator-rc-refcell +``` + +## Mimicking a Typical OOP + +`Rc>` hides objects from compiler eyes inside of an opaque smart pointer. +In this case, borrow checks move into the runtime that means panicking in case of +borrow rules violation. + +There is an example of a [Station Manager example in Go][4]. Trying to make it +with Rust leads to mimicking a typical OOP through reference counting and +borrow checking with mutability in runtime (which has quite unpredictable +behavior in runtime with panics here and there). + +Key points: + +1. All methods are read-only: immutable `self` and parameters. +2. `Rc`, `RefCell` are extensively used under the hood to take responsibility for the mutable borrowing from compilation time to runtime. Invalid implementation will lead to panic in runtime. + +See the full article: [README.md](../README.md). + +[4]: https://refactoring.guru/design-patterns/mediator/go/example \ No newline at end of file diff --git a/behavioral/mediator/mediator-rc-refcell/main.rs b/behavioral/mediator/mediator-rc-refcell/main.rs new file mode 100644 index 0000000..7271249 --- /dev/null +++ b/behavioral/mediator/mediator-rc-refcell/main.rs @@ -0,0 +1,25 @@ +mod train_station; +mod trains; + +use std::{cell::RefCell, rc::Rc}; + +use train_station::StationManager; +use trains::{FreightTrain, PassengerTrain, Train}; + +fn main() { + let station = Rc::new(RefCell::new(StationManager::default())); + + let train1 = Rc::new(PassengerTrain::new("Train 1".into(), station.clone())); + let train2 = Rc::new(FreightTrain::new("Train 2".into(), station.clone())); + + { + let mut station = station.borrow_mut(); + station.register(train1.clone()); + station.register(train2.clone()); + } + + train1.arrive(); + train2.arrive(); + train1.depart(); + train2.depart(); +} diff --git a/behavioral/mediator/mediator-rc-refcell/train_station.rs b/behavioral/mediator/mediator-rc-refcell/train_station.rs new file mode 100644 index 0000000..2a49d7a --- /dev/null +++ b/behavioral/mediator/mediator-rc-refcell/train_station.rs @@ -0,0 +1,54 @@ +use std::{ + cell::RefCell, + collections::{HashMap, VecDeque}, + rc::Rc, +}; + +use crate::trains::Train; + +pub trait Mediator { + fn notify_about_arrival(&self, train: &dyn Train) -> bool; + fn notify_about_departure(&self, train: &dyn Train); +} + +#[derive(Default)] +pub struct StationManager { + trains: HashMap>, + train_queue: RefCell>, + train_on_platform: RefCell>, +} + +impl StationManager { + pub fn register(&mut self, train: Rc) { + self.trains.insert(train.name().clone(), train); + } +} + +impl Mediator for StationManager { + fn notify_about_arrival(&self, train: &dyn Train) -> bool { + let train_name = train.name().clone(); + + self.trains.get(&train_name).expect("A train should exist"); + + if self.train_on_platform.borrow().is_some() { + self.train_queue.borrow_mut().push_back(train_name.clone()); + return false; + } + + self.train_on_platform.replace(Some(train_name)); + return true; + } + + fn notify_about_departure(&self, train: &dyn Train) { + if Some(train.name().clone()) != self.train_on_platform.replace(None) { + return; + } + + let next_train = self.train_queue.borrow_mut().pop_front(); + + if let Some(next_train_name) = next_train { + let next_train = self.trains.get(&next_train_name).unwrap(); + next_train.arrive(); + } + } +} diff --git a/behavioral/mediator/mediator-rc-refcell/trains/freight_train.rs b/behavioral/mediator/mediator-rc-refcell/trains/freight_train.rs new file mode 100644 index 0000000..67f8283 --- /dev/null +++ b/behavioral/mediator/mediator-rc-refcell/trains/freight_train.rs @@ -0,0 +1,35 @@ +use std::{cell::RefCell, rc::Rc}; + +use super::Train; +use crate::train_station::Mediator; + +pub struct FreightTrain { + name: String, + mediator: Rc>, +} + +impl FreightTrain { + pub fn new(name: String, mediator: Rc>) -> Self { + Self { name, mediator } + } +} + +impl Train for FreightTrain { + fn name(&self) -> &String { + &self.name + } + + fn arrive(&self) { + if !self.mediator.borrow().notify_about_arrival(self) { + println!("Freight train {}: Arrival blocked, waiting", self.name); + return; + } + + println!("Freight train {}: Arrived", self.name); + } + + fn depart(&self) { + println!("Freight train {}: Leaving", self.name); + self.mediator.borrow().notify_about_departure(self); + } +} diff --git a/behavioral/mediator/mediator-rc-refcell/trains/mod.rs b/behavioral/mediator/mediator-rc-refcell/trains/mod.rs new file mode 100644 index 0000000..47837b9 --- /dev/null +++ b/behavioral/mediator/mediator-rc-refcell/trains/mod.rs @@ -0,0 +1,11 @@ +mod freight_train; +mod passenger_train; + +pub use freight_train::FreightTrain; +pub use passenger_train::PassengerTrain; + +pub trait Train { + fn name(&self) -> &String; + fn arrive(&self); + fn depart(&self); +} diff --git a/behavioral/mediator/mediator-rc-refcell/trains/passenger_train.rs b/behavioral/mediator/mediator-rc-refcell/trains/passenger_train.rs new file mode 100644 index 0000000..daf42d4 --- /dev/null +++ b/behavioral/mediator/mediator-rc-refcell/trains/passenger_train.rs @@ -0,0 +1,35 @@ +use std::{cell::RefCell, rc::Rc}; + +use super::Train; +use crate::train_station::Mediator; + +pub struct PassengerTrain { + name: String, + mediator: Rc>, +} + +impl PassengerTrain { + pub fn new(name: String, mediator: Rc>) -> Self { + Self { name, mediator } + } +} + +impl Train for PassengerTrain { + fn name(&self) -> &String { + &self.name + } + + fn arrive(&self) { + if !self.mediator.borrow().notify_about_arrival(self) { + println!("Passenger train {}: Arrival blocked, waiting", self.name); + return; + } + + println!("Passenger train {}: Arrived", self.name); + } + + fn depart(&self) { + println!("Passenger train {}: Leaving", self.name); + self.mediator.borrow().notify_about_departure(self); + } +} diff --git a/behavioral/mediator/mediator-top-down/Cargo.toml b/behavioral/mediator/mediator-top-down/Cargo.toml new file mode 100644 index 0000000..4c9ae0f --- /dev/null +++ b/behavioral/mediator/mediator-top-down/Cargo.toml @@ -0,0 +1,12 @@ +[package] +edition = "2021" +name = "mediator-top-down" +version = "0.1.0" + +[[bin]] +name = "mediator" +path = "main.rs" + +[[bin]] +name = "mediator-top-down" +path = "main.rs" diff --git a/behavioral/mediator/mediator-top-down/README.md b/behavioral/mediator/mediator-top-down/README.md new file mode 100644 index 0000000..3c81a80 --- /dev/null +++ b/behavioral/mediator/mediator-top-down/README.md @@ -0,0 +1,72 @@ +# Mediator with Top-Down Ownership + +Top-Down Ownership approach allows to apply Mediator in Rust as it is +a suitable for Rust's ownership model with strict borrow checker rules. + +## How To Run + +```bash +cargo run --bin mediator-top-down +``` + +## Execution Result + +``` +Passenger train Train 1: Arrived +Freight train Train 2: Arrival blocked, waiting +Passenger train Train 1: Leaving +Freight train Train 2: Arrived +Freight train Train 2: Leaving +'Train 3' is not on the station! +``` + +## Top-Down Ownership + +The key point is thinking in terms of OWNERSHIP. + +1. A mediator takes ownership of all components. +2. A component doesn't preserve a reference to a mediator. Instead, it gets the reference via a method call. + + ```rust + // A train gets a mediator object by reference. + pub trait Train { + fn name(&self) -> &String; + fn arrive(&mut self, mediator: &mut dyn Mediator); + fn depart(&mut self, mediator: &mut dyn Mediator); + } + + // Mediator has notification methods. + pub trait Mediator { + fn notify_about_arrival(&mut self, train_name: &str) -> bool; + fn notify_about_departure(&mut self, train_name: &str); + } + ``` + +3. Control flow starts from `fn main()` where the mediator receives external events/commands. +4. `Mediator` trait for the interaction between components (`notify_about_arrival`, `notify_about_departure`) is not the same as its external API for receiving external events (`accept`, `depart` commands from the main loop). + + ```rust + let train1 = PassengerTrain::new("Train 1"); + let train2 = FreightTrain::new("Train 2"); + + // Station has `accept` and `depart` methods, + // but it also implements `Mediator`. + let mut station = TrainStation::default(); + + // Station is taking ownership of the trains. + station.accept(train1); + station.accept(train2); + + // `train1` and `train2` have been moved inside, + // but we can use train names to depart them. + station.depart("Train 1"); + station.depart("Train 2"); + station.depart("Train 3"); + ``` + +![Top-Down Ownership](https://github.com/fadeevab/mediator-pattern-rust/raw/main/images/mediator-rust-approach.jpg) + +## References + +1. [Mediator Pattern in Rust](https://github.com/fadeevab/mediator-pattern-rust) +2. [Mediator in Go (Example)](https://refactoring.guru/design-patterns/mediator/go/example) diff --git a/behavioral/mediator/main.rs b/behavioral/mediator/mediator-top-down/main.rs similarity index 100% rename from behavioral/mediator/main.rs rename to behavioral/mediator/mediator-top-down/main.rs diff --git a/behavioral/mediator/train_station.rs b/behavioral/mediator/mediator-top-down/train_station.rs similarity index 100% rename from behavioral/mediator/train_station.rs rename to behavioral/mediator/mediator-top-down/train_station.rs diff --git a/behavioral/mediator/trains/freight_train.rs b/behavioral/mediator/mediator-top-down/trains/freight_train.rs similarity index 100% rename from behavioral/mediator/trains/freight_train.rs rename to behavioral/mediator/mediator-top-down/trains/freight_train.rs diff --git a/behavioral/mediator/trains/mod.rs b/behavioral/mediator/mediator-top-down/trains/mod.rs similarity index 100% rename from behavioral/mediator/trains/mod.rs rename to behavioral/mediator/mediator-top-down/trains/mod.rs diff --git a/behavioral/mediator/trains/passenger_train.rs b/behavioral/mediator/mediator-top-down/trains/passenger_train.rs similarity index 100% rename from behavioral/mediator/trains/passenger_train.rs rename to behavioral/mediator/mediator-top-down/trains/passenger_train.rs From def815d4601e91a5ff13926a266d18f39e9a88be Mon Sep 17 00:00:00 2001 From: Alexander Fadeev Date: Wed, 3 May 2023 21:39:56 +0300 Subject: [PATCH 2/4] Use Rust 1.53 for GitHub Workflows Fix `cargo clippy` errors revealing from the newest features --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4f0812f..56b3598 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,8 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Use Rust 1.53 + run: rustup install 1.53 - name: Run Rustfmt run: cargo fmt -- --check - name: Run Clippy From aabaff8c2edf45ae8712505ab4c4278dffe8f7f5 Mon Sep 17 00:00:00 2001 From: Alexander Fadeev Date: Wed, 3 May 2023 22:28:24 +0300 Subject: [PATCH 3/4] Fix clippy errors --- behavioral/mediator/mediator-rc-refcell/train_station.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/behavioral/mediator/mediator-rc-refcell/train_station.rs b/behavioral/mediator/mediator-rc-refcell/train_station.rs index 2a49d7a..7abfa9b 100644 --- a/behavioral/mediator/mediator-rc-refcell/train_station.rs +++ b/behavioral/mediator/mediator-rc-refcell/train_station.rs @@ -31,12 +31,12 @@ impl Mediator for StationManager { self.trains.get(&train_name).expect("A train should exist"); if self.train_on_platform.borrow().is_some() { - self.train_queue.borrow_mut().push_back(train_name.clone()); + self.train_queue.borrow_mut().push_back(train_name); return false; } self.train_on_platform.replace(Some(train_name)); - return true; + true } fn notify_about_departure(&self, train: &dyn Train) { From aaaff0fc20b2b4a2675d05a767f0ada418ecd1b1 Mon Sep 17 00:00:00 2001 From: Alexander Fadeev Date: Wed, 3 May 2023 22:44:20 +0300 Subject: [PATCH 4/4] Update behavioral/mediator/README.md --- behavioral/mediator/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/behavioral/mediator/README.md b/behavioral/mediator/README.md index 0cb08d7..7190998 100644 --- a/behavioral/mediator/README.md +++ b/behavioral/mediator/README.md @@ -1,6 +1,6 @@ # Mediator -_*Mediator* restricts direct communications between the objects and forces them +_**Mediator** restricts direct communications between the objects and forces them to collaborate only via a mediator object_. It also stands for a Controller in the MVC (Model-View-Controller) pattern. ## How to Run