修复 rust 引用问题

This commit is contained in:
YuWuKunCheng
2026-05-28 01:07:16 +08:00
parent 4908870245
commit 52823e6c75
19 changed files with 1777 additions and 323 deletions
+2 -2
View File
@@ -928,7 +928,7 @@ impl 笔 {
}
/// 是否背驰过 — 判断笔是否在停顿位置出现过MACD趋向背驰
pub fn (: &线, : &) -> Vec<Rc<>> {
pub fn (: &线, : &) -> Vec<Rc<K线>> {
let = Self::(, );
let mut = Vec::new();
@@ -940,7 +940,7 @@ impl 笔 {
);
let = 线::K线序列MACD趋向背驰(&k线范围, .());
if .iter().all(|&x| x) {
.push(Rc::clone(&.));
.push(Rc::clone(&..));
}
}
+2 -6
View File
@@ -288,12 +288,8 @@ impl 中枢 {
/// 返回当前中枢最后一段所处的位置关系:中枢之中/中枢之上/中枢之下
pub fn (&self) -> &str {
let = self..last().unwrap();
let _中 = if . == "" {
&..
} else {
&..last().unwrap()..
};
let = crate::types::::(self.(), self.(), _中., _中.);
let = ._武();
let = crate::types::::(self.(), self.(), .., ..);
if == crate::types:::: {
"中枢之上"
} else if == crate::types:::: {
+32 -30
View File
@@ -27,6 +27,7 @@ use crate::algorithm::hub::中枢;
use crate::business::observer::;
use crate::config::;
use crate::kline::bar::K线;
use crate::kline::chan_kline::K线;
use crate::structure::dash_line::线;
use crate::structure::fractal_obj::;
use crate::structure::segment_feat::线;
@@ -56,7 +57,7 @@ impl 线段 {
if !..is_empty() {
if !::(&..last().unwrap()., &., "") {
panic!(
"线段.添加虚线 不连续 {:?} {:?}",
"线段.添加虚线 不连续 {} {}",
..last().unwrap(),
);
@@ -85,17 +86,14 @@ impl 线段 {
);
}
if .. == . {
panic!("文武结构相同 {} {:?} {:?}", , ., );
panic!("文武结构相同 {} {} {}", , ., );
}
if let (Some(ref ), Some(ref )) = (&., &.) {
if let Some() =
::(.as_ref(), ..as_ref(), .as_ref(), false, false)
{
if != . {
panic!(
"武斗[{}], 分型结构不一致 {:?} != {:?}",
, , .
);
panic!("武斗[{}], 分型结构不一致 {} != {}", , , .);
}
}
}
@@ -557,7 +555,7 @@ impl 线段 {
if .is_none() {
eprintln!(
" 线段.刷新 特征后一笔 = None, {:?}, 有效特征: {}",
" 线段.刷新 特征后一笔 = None, {}, 有效特征: {}",
2,
.len()
);
@@ -679,7 +677,7 @@ impl 线段 {
if let Some() = 线.last() {
if !.(seg) {
panic!(
"线段.向序列中添加 不连续[{}] {:?} {:?}",
"线段.向序列中添加 不连续[{}] {} {}",
, ., seg.
);
}
@@ -694,7 +692,7 @@ impl 线段 {
{
// The Python code asserts here; we warn
eprintln!(
"线段._向序列中添加[{}], 之前线段.右 = None {:?}",
"线段._向序列中添加[{}], 之前线段.右 = None {}",
, 线
);
}
@@ -706,7 +704,7 @@ impl 线段 {
&& !线.
{
panic!(
"线段._向序列中添加[{}], 之前线段[-1] not in 待添加虚线! {:?}",
"线段._向序列中添加[{}], 之前线段[-1] not in 待添加虚线! {}",
, 线
);
}
@@ -735,7 +733,7 @@ impl 线段 {
}
if Rc::as_ptr(线.last().unwrap()) != Rc::as_ptr(线) {
panic!("线段._从序列中删除 弹出数据不在列表中 {:?}", 线);
panic!("线段._从序列中删除 弹出数据不在列表中 {}", 线);
}
if 线..len() >= 3 {
@@ -889,7 +887,7 @@ impl 线段 {
}
// 执行修正
eprintln!("[警告<{}, {}>]: 线段.修复贯穿伤 {:?}", , , 穿);
eprintln!("[警告<{}, {}>]: 线段.修复贯穿伤 {}", line!(), , 穿);
let = 线..clone();
Self::_弹出线段(
@@ -1320,7 +1318,7 @@ impl 线段 {
if let Some() = 线.last() {
if !.(seg) {
panic!(
"线段.向序列中添加 不连续[{}] {:?} {:?}",
"线段.向序列中添加 不连续[{}] {} {}",
, ., seg.
);
}
@@ -1347,7 +1345,7 @@ impl 线段 {
seg. = false;
Some(drop)
} else {
panic!("线段._从序列中删除 弹出数据不在列表中 {:?}", 线);
panic!("线段._从序列中删除 弹出数据不在列表中 {}", 线);
}
}
@@ -1630,8 +1628,8 @@ impl 线段 {
||
}
/// 获取所有停顿位置 — 在线段范围内找出所有停顿位置
pub fn (: &线, : &) -> Vec<线> {
/// 获取所有停顿位置 — 在线段范围内找出所有停顿位置
pub fn (: &线, : &) -> Vec<线> {
let mut = Vec::new();
if . != "文武" || . != "线段" {
return ;
@@ -1647,7 +1645,7 @@ impl 线段 {
let mut : Option<std::rc::Rc<>> = None;
for in & {
if .len() >= 2 {
if .len() >= 3 {
let = ::(, );
let mut : Vec<Rc<线>> = .into_iter().map(|b| Rc::new(b)).collect();
.push(Rc::clone());
@@ -1676,21 +1674,25 @@ impl 线段 {
};
if ! {
if let Some(线) = 线.last() {
let mut = 线::线(&线.);
. = .;
let mut _rc = Rc::new();
Self::(&mut _rc, &.);
let _inner =
Rc::try_unwrap(_rc).unwrap_or_else(|rc| (*rc).clone());
if _inner.() == .() {
= Some(Rc::clone(&线.last().unwrap().));
.push(_inner);
if 线..len() % 2 == 1 {
let mut = 线::线(&线.);
. = .;
let mut _rc = Rc::new();
Self::(&mut _rc, &.);
let _inner =
Rc::try_unwrap(_rc).unwrap_or_else(|rc| (*rc).clone());
if _inner.() == .() {
= Some(Rc::clone(&线.last().unwrap().));
.push(_inner);
}
}
}
}
if Rc::as_ptr() != Rc::as_ptr() {
.pop();
if let Some(mut popped) = .pop() {
Rc::make_mut(&mut popped). = false;
}
}
}
} else {
@@ -1701,15 +1703,15 @@ impl 线段 {
}
/// 是否背驰过 — 判断线段是否在停顿位置出现过背驰
pub fn (: &线, : &) -> Vec<Rc<>> {
let = Self::(, );
pub fn (: &线, : &) -> Vec<Rc<K线>> {
let = Self::(, );
let mut = Vec::new();
for in {
let mut _rc = Rc::new();
Self::(&mut _rc, &.);
if Self::线(&_rc, ) {
.push(Rc::clone(&_rc.));
.push(Rc::clone(&_rc..));
}
}