[Github-comments] [geany] Implementations of same structure not grouped in Rust parser (#728)
Peter C. S. Scholtens
notifications at xxxxx
Sun Nov 1 21:13:03 UTC 2015
Hello,
While trying operator overloading in Rust, I see some unexepected behaviour of Geany. For a structure called ComplexNumber, the implementation of Add and Mul require separate implementation blocks. I expected that Add and Mul would be listed together with print and magnitude. If I try operator overloading in a similar way in C++, the member functions get nicely grouped below the name of the structure, even if they are defined in separate blocks. See the picture and the attached Rust example.
![implementationsrust](https://cloud.githubusercontent.com/assets/7198614/10871318/e51a5f5a-80e3-11e5-987f-4e2fc4c16615.png)
use std::ops::{Add,Mul};
#[derive(Debug,Copy,Clone)]
pub struct ComplexNumber {
r : f64,
j : f64
}
impl Add for ComplexNumber{
type Output = ComplexNumber;
fn add(self, rhs: ComplexNumber) -> ComplexNumber {
ComplexNumber {r: self.r+rhs.r, j: self.j+rhs.j}
}
}
impl Mul for ComplexNumber{
type Output = ComplexNumber;
fn mul(self, rhs: ComplexNumber) -> ComplexNumber {
ComplexNumber {r: self.r*rhs.r-self.j*rhs.j, j: self.r*rhs.j+self.j*rhs.r}
}
}
impl ComplexNumber {
fn print(& self) {
print!("{}+{}i ",self.r,self.j);
}
fn magnitude(& self) -> f64 {
(self.r.powi(2)+self.j.powi(2)).sqrt()
}
}
fn main()
{
let a = ComplexNumber {r: 1.0, j: 0.0};
let b = ComplexNumber {r: 0.0, j: 1.0};
let c = a + b;
let d = a * b;
let e = c + d;
c.print();
d.print();
e.print();
print!("{} ", e.magnitude());
}
---
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/728
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.geany.org/pipermail/github-comments/attachments/20151101/483af88b/attachment.html>
More information about the Github-comments
mailing list